home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 1997 #3 / Amiga Plus CD - 1997 - No. 03.iso / pd / programmierung / alienbreed3d2_src / cheesesauce / objdrawfullscreen.s < prev    next >
Text File  |  1997-01-31  |  45KB  |  3,154 lines

  1.  
  2. currzone: dc.w 0
  3.  
  4. ty3d: dc.l -100*1024
  5. by3d: dc.l 1*1024
  6.  
  7. TOPOFROOM: dc.l 0
  8. BOTOFROOM: dc.l 0
  9. AFTERWATTOP: dc.l 0
  10. AFTERWATBOT: dc.l 0
  11. BEFOREWATTOP: dc.l 0
  12. BEFOREWATBOT: dc.l 0
  13. ROOMBACK: dc.l 0
  14.  
  15. objclipt: dc.w 0
  16. objclipb: dc.w 0
  17. rightclipb: dc.w 0
  18. leftclipb: dc.w 0
  19.  
  20. ObjDraw:
  21.  
  22.  move.w (a0)+,d0
  23.  cmp.w #1,d0
  24.  blt.s beforewat
  25.  beq.s afterwat
  26.  bgt.s fullroom
  27.  
  28. beforewat:
  29.  move.l BEFOREWATTOP,ty3d
  30.  move.l BEFOREWATBOT,by3d
  31.  bra.s donetopbot
  32.  
  33. afterwat:
  34.  move.l AFTERWATTOP,ty3d
  35.  move.l AFTERWATBOT,by3d
  36.  bra.s donetopbot
  37.  
  38. fullroom:
  39.  move.l TOPOFROOM(pc),ty3d
  40.  move.l BOTOFROOM(pc),by3d
  41.  
  42. donetopbot:
  43.  
  44. ; move.l (a0)+,by3d
  45. ; move.l (a0)+,ty3d
  46.  
  47.  movem.l d0-d7/a1-a6,-(a7)
  48.  
  49.  move.w rightclip,d0
  50.  sub.w leftclip,d0
  51.  subq #1,d0
  52.  ble doneallinfront 
  53.  
  54. ; CACHE_ON d6
  55.  
  56.  move.l ObjectData,a1
  57.  move.l #ObjRotated,a2
  58.  move.l #depthtable,a3
  59.  move.l a3,a4
  60.  move.w #79,d7
  61. emptytab:
  62.  move.l #$80010000,(a3)+
  63.  dbra d7,emptytab
  64.  
  65.  moveq #0,d0
  66. insertanobj
  67.  move.w (a1),d1
  68.  blt sortedall
  69.  move.w GraphicRoom(a1),d2
  70.  cmp.w currzone(pc),d2
  71.  beq.s itsinthiszone 
  72.  
  73. notinthiszone:
  74.  adda.w #64,a1
  75.  addq #1,d0
  76.  bra insertanobj
  77.  
  78. itsinthiszone:
  79.  
  80.  move.b DOUPPER,d4
  81.  move.b ObjInTop(a1),d3
  82.  eor.b d4,d3
  83.  bne.s notinthiszone
  84.  
  85.  move.w 2(a2,d1.w*8),d1    ; zpos
  86.  
  87.  move.l #depthtable-4,a4
  88. stillinfront:
  89.  addq #4,a4
  90.  cmp.w (a4),d1
  91.  blt stillinfront
  92.  move.l #enddepthtab-4,a5
  93. finishedshift
  94.  move.l -(a5),4(a5)
  95.  cmp.l a4,a5
  96.  bgt.s finishedshift
  97.  
  98.  move.w d1,(a4)
  99.  move.w d0,2(a4)
  100.  
  101.  adda.w #64,a1
  102.  addq #1,d0
  103.  
  104.  bra insertanobj
  105.  
  106. sortedall:
  107.  
  108.  move.l #depthtable,a3
  109.  
  110. gobackanddoanother
  111.  move.w (a3)+,d0
  112.  ble.s doneallinfront
  113.  
  114.  move.w (a3)+,d0
  115.  bsr DrawtheObject
  116.  bra gobackanddoanother
  117.  
  118. doneallinfront
  119.  
  120.  movem.l (a7)+,d0-d7/a1-a6
  121.  rts
  122.  
  123. depthtable: ds.l 80
  124. enddepthtab:
  125.  
  126. DrawtheObject:
  127.  
  128.  movem.l d0-d7/a0-a6,-(a7)
  129.   
  130.  move.l ObjectData,a0
  131.  move.l #ObjRotated,a1
  132.  asl.w #6,d0
  133.  adda.w d0,a0
  134.  
  135.  move.w (a0),d0
  136.  move.w 2(a1,d0.w*8),d1    ; z pos
  137.  
  138. ; Go through clip pts to see which
  139. ; apply.
  140.  
  141. ; move.w #0,d2    ; leftclip
  142. ; move.w #96,d3  ; rightclip
  143.  
  144. ; move.l EndOfClipPt,a6
  145. ;checkclips:
  146. ; subq #8,a6
  147. ; cmp.l #ClipTable,a6
  148. ; blt outofcheckclips
  149.  
  150. ; cmp.w 2(a6),d1
  151. ; bgt.s cantleft
  152. ; move.w (a6),d4
  153. ; cmp.w d4,d2
  154. ; bgt.s cantleft
  155. ; move.w d4,d2
  156. ;cantleft:
  157.  
  158. ; cmp.w 6(a6),d1
  159. ; bgt.s cantright
  160. ; move.w 4(a6),d4
  161. ; cmp.w d4,d3
  162. ; blt.s cantright
  163. ; move.w d4,d3
  164. ;cantright:
  165.  
  166. ;outofcheckclips:
  167.  
  168. ; move.w d2,leftclipb
  169. ; move.w d3,rightclipb
  170.  
  171.  move.w leftclip,leftclipb
  172.  move.w rightclip,rightclipb
  173.  
  174.  cmp.b #$ff,6(a0)
  175.  bne BitMapObj
  176.  
  177.  bsr PolygonObj
  178.  movem.l (a7)+,d0-d7/a0-a6
  179.  rts
  180.  
  181. glassobj:
  182.  move.w (a0)+,d0    ;pt num
  183.  move.w 2(a1,d0.w*8),d1
  184.  cmp.w #25,d1
  185.  ble objbehind
  186.  
  187.  move.w topclip,d2
  188.  move.w botclip,d3
  189.  
  190.  move.l ty3d,d6
  191.  sub.l yoff,d6
  192.  divs d1,d6
  193.  add.w MIDDLEY,d6
  194.  cmp.w d3,d6
  195.  bge objbehind
  196.  cmp.w d2,d6
  197.  bge.s .okobtc
  198.  move.w d2,d6
  199. .okobtc:
  200.  move.w d6,objclipt
  201.  
  202.  move.l by3d,d6
  203.  sub.l yoff,d6
  204.  divs d1,d6
  205.  add.w MIDDLEY,d6
  206.  cmp.w d2,d6
  207.  ble objbehind
  208.  cmp.w d3,d6
  209.  ble.s .okobbc
  210.  move.w d3,d6
  211. .okobbc:
  212.  move.w d6,objclipb
  213.  
  214.  move.l 4(a1,d0.w*8),d0
  215.  move.l (a0)+,d2    ; height
  216.  ext.l d2
  217.  asl.l #7,d2
  218.  sub.l yoff,d2
  219.  divs d1,d2    
  220.  add.w MIDDLEY,d2
  221.  
  222.  divs d1,d0
  223.  add.w #MIDDLEX,d0    ;x pos of middle
  224.  
  225. ; Need to calculate:
  226. ; Width of object in pixels
  227. ; height of object in pixels
  228. ; horizontal constants
  229. ; vertical constants.
  230.  
  231.  move.l #consttab,a3
  232.  
  233.  moveq #0,d3
  234.  moveq #0,d4
  235.  move.b (a0)+,d3
  236.  move.b (a0)+,d4
  237.  asl.w #7,d3
  238.  asl.w #7,d4
  239.  divs d1,d3 ;width in pixels
  240.  divs d1,d4 ;height in pixels
  241.  sub.w d4,d2
  242.  sub.w d3,d0
  243.  cmp.w rightclipb,d0
  244.  bge objbehind
  245.  add.w d3,d3
  246.  cmp.w objclipb,d2
  247.  bge objbehind
  248.  
  249.  add.w d4,d4
  250.  
  251.  move.w d3,realwidth
  252.  move.w d4,realheight
  253.  
  254. * OBTAIN POINTERS TO HORIZ AND VERT
  255. * CONSTANTS FOR MOVING ACROSS AND
  256. * DOWN THE OBJECT GRAPHIC.
  257.  
  258.  move.w d1,d7
  259.  moveq #0,d6
  260.  move.b 6(a0),d6
  261.  add.w d6,d6
  262.  mulu d6,d7
  263.  move.b -2(a0),d6
  264.  divu d6,d7
  265.  swap d7
  266.  clr.w d7
  267.  swap d7
  268.  
  269.  lea (a3,d7.l*8),a2    ; pointer to
  270.             ; horiz const
  271.  move.w d1,d7
  272.  move.b 7(a0),d6
  273.  add.w d6,d6
  274.  mulu d6,d7
  275.  move.b -1(a0),d6
  276.  divu d6,d7
  277.  swap d7
  278.  clr.w d7
  279.  swap d7
  280.  lea (a3,d7.l*8),a3    ; pointer to
  281.              ; vertical c.
  282.  
  283. * CLIP OBJECT TO TOP AND BOTTOM
  284. * OF THE VISIBLE DISPLAY
  285.  
  286.  moveq #0,d7
  287.  cmp.w objclipt,d2
  288.  bge.s .objfitsontop
  289.  
  290.  sub.w objclipt,d2
  291.  add.w d2,d4    ;new height in
  292.         ;pixels
  293.  ble objbehind  ; nothing to draw
  294.  
  295.  move.w d2,d7
  296.  neg.w d7    ; factor to mult.
  297.          ; constants by
  298.          ; at top of obj.
  299.  move.w objclipt,d2
  300.  
  301. .objfitsontop:
  302.  
  303.  move.w objclipb,d6
  304.  sub.w d2,d6
  305.  cmp.w d6,d4
  306.  ble.s .objfitsonbot
  307.  
  308.  move.w d6,d4
  309.  
  310. .objfitsonbot:
  311.  
  312.  subq #1,d4
  313.  blt objbehind
  314.  
  315.  move.l #ontoscr,a6
  316.  move.l (a6,d2.w*4),d2
  317.  
  318.  add.l FASTBUFFER,d2
  319.  move.l d2,toppt
  320.  
  321.  move.l #WorkSpace,a5
  322.  move.l #glassball,a4
  323.  cmp.w leftclipb,d0
  324.  bge.s .okonleft
  325.  
  326.  sub.w leftclipb,d0
  327.  add.w d0,d3
  328.  ble objbehind
  329.  
  330.  move.w (a2),d1
  331.  move.w 2(a2),d2
  332.  neg.w d0
  333.  muls d0,d1
  334.  mulu d0,d2
  335.  swap d2
  336.  add.w d2,d1
  337.  asl.w #7,d1
  338.  lea (a5,d1.w),a5
  339.  lea (a4,d1.w),a4
  340.  
  341.  move.w leftclipb,d0
  342.  
  343. .okonleft:
  344.  
  345.  move.w d0,d6
  346.  add.w d3,d6
  347.  sub.w rightclipb,d6
  348.  blt.s .okrightside
  349.  
  350.  sub.w #1,d3
  351.  sub.w d6,d3
  352.  
  353. .okrightside:
  354.  
  355.  move.l #objintocop,a1
  356.  sub.l a1,a1
  357.  move.w d0,a1
  358.  add.w a1,a1
  359.  
  360.  move.w (a3),d5
  361.  move.w 2(a3),d6
  362.  muls d7,d5
  363.  mulu d7,d6
  364.  swap d6
  365.  add.w d6,d5
  366. ; add.w 2(a0),d5    ;d5 contains
  367.          ;top offset into
  368.          ;each strip.
  369.  add.l #$80000000,d5
  370.      
  371.  move.l (a2),d6
  372.  moveq.l #0,d7
  373.  move.l a5,midobj
  374.  move.l a4,midglass
  375.  move.l (a3),d2
  376.  swap d2
  377.  move.l #times128,a0
  378.  
  379.  movem.l d0-d7/a0-a6,-(a7)
  380.  
  381.  move.w d3,d1
  382.  ext.l d1
  383.  swap d1
  384.  move.w d4,d2
  385.  ext.l d2
  386.  swap d2
  387.  asr.l #6,d1
  388.  asr.l #6,d2
  389.  move.w d1,d5
  390.  move.w d2,d6
  391.  swap d1
  392.  add.w d1,d1
  393.  swap d2
  394.  
  395.  muls #320*2,d2
  396.  
  397.  move.l #WorkSpace,a0
  398.  
  399.  move.w #63,d0
  400. .readinto:
  401.  swap d0
  402.  move.w #63,d0
  403.  move.l toppt(pc),a6
  404.  adda.w a1,a6
  405.  add.w d1,a1
  406.  add.w d5,d7
  407.  bcc.s .noadmoreh
  408.  addq #2,a1
  409. .noadmoreh:
  410.  swap d7
  411.  move.w #0,d7 
  412. .readintodown:
  413.  move.w (a6),d3
  414.  move.w d3,(a0)+
  415.  add.w d2,a6
  416.  add.w d6,d7
  417.  bcc.s .noadmore
  418.  adda.w #320*2,a6
  419. .noadmore:
  420.  dbra d0,.readintodown
  421.  swap d0
  422.  swap d7
  423.  dbra d0,.readinto
  424.  
  425.  
  426. ; Want to zoom an area d3*d4
  427. ; in size up to 64*64 in size.
  428. ; move.l #WorkSpace,a0
  429. ; move.l frompt,a2
  430. ; move.w #104*4,d3
  431. ; move.w #1,d6
  432. ;.ribl
  433. ; move.w #31,d0
  434. ;.readinto
  435. ; move.w #15,d1
  436. ; move.l a2,a1
  437. ;.readintodown
  438. ; move.w (a1),(a0)+
  439. ; adda.w d3,a1
  440. ; move.w (a1),(a0)+
  441. ; adda.w d3,a1
  442. ; move.w (a1),(a0)+
  443. ; adda.w d3,a1
  444. ; move.w (a1),(a0)+
  445. ; adda.w d3,a1
  446. ; dbra d1,.readintodown
  447. ;; add.w #256-128,a0
  448. ; addq #4,a2
  449. ; dbra d0,.readinto
  450. ; addq #4,a2
  451. ; dbra d6,.ribl
  452.  
  453.  movem.l (a7)+,d0-d7/a0-a6
  454.  
  455.  move.l #darkentab,a2
  456.  move.l toppt,d1
  457.  add.l a1,d1
  458.  move.l d1,toppt
  459.  move.l d6,a1
  460.  moveq #0,d6
  461.  
  462. .drawrightside:
  463.  swap d7
  464.  move.l midglass(pc),a4
  465.  adda.w (a0,d7.w*2),a4
  466.  swap d7
  467.  add.l a1,d7
  468.  move.l toppt(pc),a6
  469.  addq.l #2,toppt
  470.  
  471.  move.l d5,d1
  472.  move.w d4,-(a7)
  473.  swap d3
  474. .drawavertstrip
  475.  move.w (a4,d1.w*2),d3
  476.  blt.s .itsbackground
  477.  move.b (a5,d3.w*2),d6
  478.  move.b (a2,d6.w),(a6)
  479. .itsbackground
  480.  adda.w #320*2,a6
  481.  addx.l d2,d1
  482.  dbra d4,.drawavertstrip
  483.  swap d3
  484.  move.w (a7)+,d4
  485.  
  486.  dbra d3,.drawrightside
  487.  movem.l (a7)+,d0-d7/a0-a6
  488.  
  489.  rts
  490.  
  491. realwidth: dc.w 0
  492. realheight: dc.w 0
  493.  
  494. midglass:
  495.  dc.l 0
  496. times128:
  497. val SET 0
  498.  REPT 100
  499.  dc.w val*128
  500. val SET val+1
  501.  ENDR
  502.  
  503. glareobj:
  504.  
  505.  move.w (a0)+,d0    ;pt num
  506.  move.w 2(a1,d0.w*8),d1
  507.  cmp.w #25,d1
  508.  ble objbehind
  509.  
  510.  move.w topclip,d2
  511.  move.w botclip,d3
  512.  
  513.  move.l ty3d,d6
  514.  sub.l yoff,d6
  515.  divs d1,d6
  516.  add.w MIDDLEY,d6
  517.  cmp.w d3,d6
  518.  bge objbehind
  519.  cmp.w d2,d6
  520.  bge.s .okobtc
  521.  move.w d2,d6
  522. .okobtc:
  523.  move.w d6,objclipt
  524.  
  525.  move.l by3d,d6
  526.  sub.l yoff,d6
  527.  divs d1,d6
  528.  add.w MIDDLEY,d6
  529.  cmp.w d2,d6
  530.  ble objbehind
  531.  cmp.w d3,d6
  532.  ble.s .okobbc
  533.  move.w d3,d6
  534. .okobbc:
  535.  move.w d6,objclipb
  536.  
  537.  move.l 4(a1,d0.w*8),d0
  538.  addq #2,a0
  539.  move.l #SHADINGTABLE-512,a4
  540.  
  541.  move.w (a0)+,d2    ; height
  542.  ext.l d2
  543.  asl.l #7,d2
  544.  sub.l yoff,d2
  545.  divs d1,d2    
  546.  add.w MIDDLEY,d2
  547.  
  548.  divs d1,d0
  549.  add.w #MIDDLEX,d0    ;x pos of middle
  550.  
  551. ; Need to calculate:
  552. ; Width of object in pixels
  553. ; height of object in pixels
  554. ; horizontal constants
  555. ; vertical constants.
  556.  
  557.  move.l #consttab,a3
  558.  
  559.  moveq #0,d3
  560.  moveq #0,d4
  561.  move.b (a0)+,d3
  562.  move.b (a0)+,d4
  563.  lsl.l #7,d3
  564.  lsl.l #7,d4
  565.  divs d1,d3 ;width in pixels
  566.  divs d1,d4 ;height in pixels
  567.  
  568.  sub.w d4,d2
  569.  sub.w d3,d0
  570.  cmp.w rightclipb,d0
  571.  bge objbehind
  572.  add.w d3,d3
  573.  cmp.w objclipb,d2
  574.  bge objbehind
  575.  
  576.  add.w d4,d4
  577.  
  578. * OBTAIN POINTERS TO HORIZ AND VERT
  579. * CONSTANTS FOR MOVING ACROSS AND
  580. * DOWN THE OBJECT GRAPHIC.
  581.  move.l #Objects,a5
  582.  move.w (a0),d7
  583.  neg.w d7
  584.  asl.w #4,d7
  585.  adda.w d7,a5    ; ptr to object data.
  586.  move.l (a5)+,WAD_PTR
  587.  move.l (a5)+,PTR_PTR
  588.  add.l 4(a5),a4
  589.  move.l (a5),a5 
  590.  move.w 2(a0),d7
  591. ****************************************
  592. ; add.w #1,2(a0)
  593. ; and.w #3,2(a0)
  594. ****************************************
  595.  move.l (a5,d7.w*4),d7
  596.  move.l d7,tstddd
  597.  move.w d7,DOWN_STRIP
  598.  move.l PTR_PTR,a5
  599.  swap d7
  600.  adda.w d7,a5
  601.  
  602.  move.w d1,d7
  603.  moveq #0,d6
  604.  move.b 6(a0),d6
  605.  add.w d6,d6
  606.  mulu d6,d7
  607.  moveq #0,d6
  608.  move.b -2(a0),d6
  609.  divu d6,d7
  610.  swap d7
  611.  clr.w d7
  612.  swap d7
  613.  lea (a3,d7.l*8),a2    ; pointer to
  614.             ; horiz const
  615.  move.w d1,d7
  616.  move.b 7(a0),d6
  617.  add.w d6,d6
  618.  mulu d6,d7
  619.  moveq #0,d6
  620.  move.b -1(a0),d6
  621.  divu d6,d7
  622.  swap d7
  623.  clr.w d7
  624.  swap d7
  625.  lea (a3,d7.l*8),a3    ; pointer to
  626.              ; vertical c.
  627.  
  628. * CLIP OBJECT TO TOP AND BOTTOM
  629. * OF THE VISIBLE DISPLAY
  630.  
  631.  moveq #0,d7
  632.  cmp.w objclipt,d2
  633.  bge.s objfitsontopGLARE
  634.  
  635.  sub.w objclipt,d2
  636.  add.w d2,d4    ;new height in
  637.         ;pixels
  638.  ble objbehind  ; nothing to draw
  639.  
  640.  move.w d2,d7
  641.  neg.w d7    ; factor to mult.
  642.          ; constants by
  643.          ; at top of obj.
  644.  move.w objclipt,d2
  645.  
  646. objfitsontopGLARE:
  647.  
  648.  move.w objclipb,d6
  649.  sub.w d2,d6
  650.  cmp.w d6,d4
  651.  ble.s objfitsonbotGLARE
  652.  
  653.  move.w d6,d4
  654.  
  655. objfitsonbotGLARE:
  656.  
  657.  subq #1,d4
  658.  blt objbehind
  659.  
  660.  move.l #ontoscr,a6
  661.  move.l (a6,d2.w*4),d2
  662.  add.l FASTBUFFER,d2
  663.  move.l d2,toppt
  664.  
  665.  cmp.w leftclipb,d0
  666.  bge.s okonleftGLARE
  667.  
  668.  sub.w leftclipb,d0
  669.  add.w d0,d3
  670.  ble objbehind
  671.  
  672.  move.w (a2),d1
  673.  move.w 2(a2),d2
  674.  neg.w d0
  675.  muls d0,d1
  676.  mulu d0,d2
  677.  swap d2
  678.  add.w d2,d1
  679.  lea (a5,d1.w*4),a5
  680.  
  681.  move.w leftclipb,d0
  682.  
  683. okonleftGLARE:
  684.  
  685.  move.w d0,d6
  686.  add.w d3,d6
  687.  sub.w rightclipb,d6
  688.  blt.s okrightsideGLARE
  689.  
  690.  sub.w #1,d3
  691.  sub.w d6,d3
  692.  
  693. okrightsideGLARE:
  694.  
  695.  ext.l d0
  696.  add.l d0,toppt
  697.  add.l d0,toppt
  698.  
  699.  
  700.  move.w (a3),d5
  701.  move.w 2(a3),d6
  702.  muls d7,d5
  703.  mulu d7,d6
  704.  swap d6
  705.  add.w d6,d5
  706.  add.w DOWN_STRIP(PC),d5    ;d5 contains
  707.          ;top offset into
  708.          ;each strip.
  709.  add.l #$80000000,d5
  710.      
  711.  move.l (a2),a2
  712.  moveq.l #0,d7
  713.  move.l a5,midobj
  714.  move.l (a3),d2
  715.  swap d2
  716.  
  717.  move.l #0,a1
  718.  
  719.  
  720. drawrightsideGLARE:
  721.  swap d7
  722.  move.l midobj(pc),a5
  723.  lea (a5,d7.w*4),a5
  724.  swap d7
  725.  add.l a2,d7
  726.  move.l WAD_PTR(PC),a0
  727.  
  728.  move.l toppt(pc),a6
  729.  adda.w a1,a6
  730.  addq #2,a1
  731.  move.l (a5),d1
  732.  beq blankstripGLARE
  733.  
  734.  and.l #$ffffff,d1
  735.  add.l d1,a0
  736.  
  737.  move.b (a5),d1
  738.  cmp.b #1,d1
  739.  bgt.s ThirdThirdGLARE
  740.  beq.s SecThirdGLARE
  741.  move.l d5,d6
  742.  move.l d5,d1
  743.  move.w d4,-(a7)
  744. .drawavertstrip
  745.  move.b 1(a0,d1.w*2),d0
  746.  and.b #%00011111,d0
  747.  beq.s .dontplotthisoneitsblack
  748.  lsl.w #8,d0
  749.  move.b (a6),d0
  750.  move.w (a4,d0.w*2),(a6)
  751. .dontplotthisoneitsblack:
  752.  adda.w #320*2,a6
  753.  add.l d2,d6
  754.  addx.w d2,d1
  755.  dbra d4,.drawavertstrip
  756.  move.w (a7)+,d4
  757. blankstripGLARE:
  758.  dbra d3,drawrightsideGLARE
  759.  bra objbehind
  760.  
  761. SecThirdGLARE:
  762.  move.l d5,d1
  763.  move.l d5,d6
  764.  move.w d4,-(a7)
  765. .drawavertstrip
  766.  move.w (a0,d1.w*2),d0
  767.  lsr.w #5,d0
  768.  and.w #%11111,d0
  769.  beq.s .dontplotthisoneitsblack
  770.  lsl.w #8,d0
  771.  move.b (a6),d0
  772.  move.w (a4,d0.w*2),(a6)
  773. .dontplotthisoneitsblack:
  774.  adda.w #320*2,a6
  775.  add.l d2,d6
  776.  addx.w d2,d1
  777.  dbra d4,.drawavertstrip
  778.  move.w (a7)+,d4
  779.  dbra d3,drawrightsideGLARE
  780.  bra objbehind
  781.  
  782. ThirdThirdGLARE:
  783.  move.l d5,d1
  784.  move.l d5,d6
  785.  move.w d4,-(a7)
  786. .drawavertstrip
  787.  move.b (a0,d1.w*2),d0
  788.  lsr.b #2,d0
  789.  and.b #%11111,d0
  790.  beq.s .dontplotthisoneitsblack
  791.  lsl.w #8,d0
  792.  move.b (a6),d0
  793.  move.w (a4,d0.w*2),(a6)
  794. .dontplotthisoneitsblack:
  795.  adda.w #320*2,a6
  796.  add.l d2,d6
  797.  addx.w d2,d1
  798.  dbra d4,.drawavertstrip
  799.  move.w (a7)+,d4
  800.  dbra d3,drawrightsideGLARE
  801.  
  802.  movem.l (a7)+,d0-d7/a0-a6
  803.  rts
  804.  
  805.  
  806.  
  807. BitMapObj
  808.  
  809.  tst.l 8(a0)
  810.  blt glareobj
  811.  
  812.  move.w (a0)+,d0    ;pt num
  813.  move.w 2(a1,d0.w*8),d1
  814.  cmp.w #25,d1
  815.  ble objbehind
  816.  
  817.  move.w topclip,d2
  818.  move.w botclip,d3
  819.  
  820.  move.l ty3d,d6
  821.  sub.l yoff,d6
  822.  divs d1,d6
  823.  add.w MIDDLEY,d6
  824.  cmp.w d3,d6
  825.  bge objbehind
  826.  cmp.w d2,d6
  827.  bge.s .okobtc
  828.  move.w d2,d6
  829. .okobtc:
  830.  move.w d6,objclipt
  831.  
  832.  move.l by3d,d6
  833.  sub.l yoff,d6
  834.  divs d1,d6
  835.  add.w MIDDLEY,d6
  836.  cmp.w d2,d6
  837.  ble objbehind
  838.  cmp.w d3,d6
  839.  ble.s .okobbc
  840.  move.w d3,d6
  841. .okobbc:
  842.  move.w d6,objclipb
  843.  
  844.  move.l 4(a1,d0.w*8),d0
  845.  move.w d1,d6
  846.  asr.w #5,d6
  847.  add.w (a0)+,d6
  848.  bge.s brighttoonot
  849.  moveq #0,d6
  850. brighttoonot
  851.  sub.l a4,a4
  852.  move.w objscalecols(pc,d6.w*2),a4
  853.  bra pastobjscale
  854.  
  855. objscalecols:
  856.  dcb.w  1,64*0
  857.  dcb.w  2,64*1
  858.  dcb.w  2,64*2
  859.  dcb.w  2,64*3
  860.  dcb.w  2,64*4
  861.  dcb.w  2,64*5
  862.  dcb.w  2,64*6
  863.  dcb.w  2,64*7
  864.  dcb.w  2,64*8
  865.  dcb.w  2,64*9
  866.  dcb.w  2,64*10
  867.  dcb.w  2,64*11
  868.  dcb.w  2,64*12
  869.  dcb.w  2,64*13
  870.  dcb.w  2,64*14
  871.  dcb.w  2,64*15
  872.  dcb.w  2,64*16
  873.  dcb.w  2,64*17
  874.  dcb.w  2,64*18
  875.  dcb.w  2,64*19
  876.  dcb.w  2,64*20
  877.  dcb.w  2,64*21
  878.  dcb.w  2,64*22
  879.  dcb.w  2,64*23
  880.  dcb.w  2,64*24
  881.  dcb.w  2,64*25
  882.  dcb.w  2,64*26
  883.  dcb.w  2,64*27
  884.  dcb.w  2,64*28
  885.  dcb.w  2,64*29
  886.  dcb.w  2,64*30
  887.  dcb.w  20,64*31
  888.  
  889. pastobjscale:
  890.  
  891.  move.w (a0)+,d2    ; height
  892.  ext.l d2
  893.  asl.l #7,d2
  894.  sub.l yoff,d2
  895.  divs d1,d2    
  896.  add.w MIDDLEY,d2
  897.  
  898.  divs d1,d0
  899.  add.w #MIDDLEX,d0    ;x pos of middle
  900.  
  901. ; Need to calculate:
  902. ; Width of object in pixels
  903. ; height of object in pixels
  904. ; horizontal constants
  905. ; vertical constants.
  906.  
  907.  move.l #consttab,a3
  908.  
  909.  moveq #0,d3
  910.  moveq #0,d4
  911.  move.b (a0)+,d3
  912.  move.b (a0)+,d4
  913.  lsl.l #7,d3
  914.  lsl.l #7,d4
  915.  divs d1,d3 ;width in pixels
  916.  divs d1,d4 ;height in pixels
  917.  
  918.  sub.w d4,d2
  919.  sub.w d3,d0
  920.  cmp.w rightclipb,d0
  921.  bge objbehind
  922.  add.w d3,d3
  923.  cmp.w objclipb,d2
  924.  bge objbehind
  925.  
  926.  add.w d4,d4
  927.  
  928. * OBTAIN POINTERS TO HORIZ AND VERT
  929. * CONSTANTS FOR MOVING ACROSS AND
  930. * DOWN THE OBJECT GRAPHIC.
  931.  move.l #Objects,a5
  932.  move.w (a0),d7
  933.  asl.w #4,d7
  934.  adda.w d7,a5    ; ptr to object data.
  935.  move.l (a5)+,WAD_PTR
  936.  move.l (a5)+,PTR_PTR
  937.  add.l 4(a5),a4
  938.  move.l (a5),a5 
  939.  move.w 2(a0),d7
  940.  move.l (a5,d7.w*4),d7
  941.  move.l d7,tstddd
  942.  move.w d7,DOWN_STRIP
  943.  move.l PTR_PTR,a5
  944.  swap d7
  945.  adda.w d7,a5
  946.  
  947.  move.w d1,d7
  948.  moveq #0,d6
  949.  move.b 6(a0),d6
  950.  add.w d6,d6
  951.  mulu d6,d7
  952.  moveq #0,d6
  953.  move.b -2(a0),d6
  954.  divu d6,d7
  955.  swap d7
  956.  clr.w d7
  957.  swap d7
  958.  lea (a3,d7.l*8),a2    ; pointer to
  959.             ; horiz const
  960.  move.w d1,d7
  961.  move.b 7(a0),d6
  962.  add.w d6,d6
  963.  mulu d6,d7
  964.  moveq #0,d6
  965.  move.b -1(a0),d6
  966.  divu d6,d7
  967.  swap d7
  968.  clr.w d7
  969.  swap d7
  970.  lea (a3,d7.l*8),a3    ; pointer to
  971.              ; vertical c.
  972.  
  973. * CLIP OBJECT TO TOP AND BOTTOM
  974. * OF THE VISIBLE DISPLAY
  975.  
  976.  moveq #0,d7
  977.  cmp.w objclipt,d2
  978.  bge.s objfitsontop
  979.  
  980.  sub.w objclipt,d2
  981.  add.w d2,d4    ;new height in
  982.         ;pixels
  983.  ble objbehind  ; nothing to draw
  984.  
  985.  move.w d2,d7
  986.  neg.w d7    ; factor to mult.
  987.          ; constants by
  988.          ; at top of obj.
  989.  move.w objclipt,d2
  990.  
  991. objfitsontop:
  992.  
  993.  move.w objclipb,d6
  994.  sub.w d2,d6
  995.  cmp.w d6,d4
  996.  ble.s objfitsonbot
  997.  
  998.  move.w d6,d4
  999.  
  1000. objfitsonbot:
  1001.  
  1002.  subq #1,d4
  1003.  blt objbehind
  1004.  
  1005.  move.l #ontoscr,a6
  1006.  move.l (a6,d2.w*4),d2
  1007.  add.l FASTBUFFER,d2
  1008.  move.l d2,toppt
  1009.  
  1010.  cmp.w leftclipb,d0
  1011.  bge.s okonleft
  1012.  
  1013.  sub.w leftclipb,d0
  1014.  add.w d0,d3
  1015.  ble objbehind
  1016.  
  1017.  move.w (a2),d1
  1018.  move.w 2(a2),d2
  1019.  neg.w d0
  1020.  muls d0,d1
  1021.  mulu d0,d2
  1022.  swap d2
  1023.  add.w d2,d1
  1024.  lea (a5,d1.w*4),a5
  1025.  
  1026.  move.w leftclipb,d0
  1027.  
  1028. okonleft:
  1029.  
  1030.  move.w d0,d6
  1031.  add.w d3,d6
  1032.  sub.w rightclipb,d6
  1033.  blt.s okrightside
  1034.  
  1035.  sub.w #1,d3
  1036.  sub.w d6,d3
  1037.  
  1038. okrightside:
  1039.  
  1040.  ext.l d0
  1041.  add.l d0,toppt
  1042.  add.l d0,toppt
  1043.  
  1044.  
  1045.  move.w (a3),d5
  1046.  move.w 2(a3),d6
  1047.  muls d7,d5
  1048.  mulu d7,d6
  1049.  swap d6
  1050.  add.w d6,d5
  1051.  add.w DOWN_STRIP(PC),d5    ;d5 contains
  1052.          ;top offset into
  1053.          ;each strip.
  1054.  add.l #$80000000,d5
  1055.      
  1056.  move.l (a2),a2
  1057.  moveq.l #0,d7
  1058.  move.l a5,midobj
  1059.  move.l (a3),d2
  1060.  swap d2
  1061.  
  1062.  move.l #0,a1
  1063.  
  1064.  
  1065. drawrightside:
  1066.  swap d7
  1067.  move.l midobj(pc),a5
  1068.  lea (a5,d7.w*4),a5
  1069.  swap d7
  1070.  add.l a2,d7
  1071.  move.l WAD_PTR(PC),a0
  1072.  
  1073.  move.l toppt(pc),a6
  1074.  adda.w a1,a6
  1075.  addq #2,a1
  1076.  move.l (a5),d1
  1077.  beq blankstrip
  1078.  
  1079.  and.l #$ffffff,d1
  1080.  add.l d1,a0
  1081.  
  1082.  move.b (a5),d1
  1083.  cmp.b #1,d1
  1084.  bgt.s ThirdThird
  1085.  beq.s SecThird
  1086.  move.l d5,d6
  1087.  move.l d5,d1
  1088.  move.w d4,-(a7)
  1089. .drawavertstrip
  1090.  move.b 1(a0,d1.w*2),d0
  1091.  and.b #%00011111,d0
  1092.  beq.s .dontplotthisoneitsblack
  1093.  move.w (a4,d0.w*2),(a6)
  1094. .dontplotthisoneitsblack:
  1095.  adda.w #320*2,a6
  1096.  add.l d2,d6
  1097.  addx.w d2,d1
  1098.  dbra d4,.drawavertstrip
  1099.  move.w (a7)+,d4
  1100. blankstrip:
  1101.  dbra d3,drawrightside
  1102.  bra.s objbehind
  1103.  
  1104. SecThird:
  1105.  move.l d5,d1
  1106.  move.l d5,d6
  1107.  move.w d4,-(a7)
  1108. .drawavertstrip
  1109.  move.w (a0,d1.w*2),d0
  1110.  lsr.w #5,d0
  1111.  and.w #%11111,d0
  1112.  beq.s .dontplotthisoneitsblack
  1113.  move.w (a4,d0.w*2),(a6)
  1114. .dontplotthisoneitsblack:
  1115.  adda.w #320*2,a6
  1116.  add.l d2,d6
  1117.  addx.w d2,d1
  1118.  dbra d4,.drawavertstrip
  1119.  move.w (a7)+,d4
  1120.  dbra d3,drawrightside
  1121.  bra.s objbehind
  1122.  
  1123. ThirdThird:
  1124.  move.l d5,d1
  1125.  move.l d5,d6
  1126.  move.w d4,-(a7)
  1127. .drawavertstrip
  1128.  move.b (a0,d1.w*2),d0
  1129.  lsr.b #2,d0
  1130.  and.b #%11111,d0
  1131.  beq.s .dontplotthisoneitsblack
  1132.  move.w (a4,d0.w*2),(a6)
  1133. .dontplotthisoneitsblack:
  1134.  adda.w #320*2,a6
  1135.  add.l d2,d6
  1136.  addx.w d2,d1
  1137.  dbra d4,.drawavertstrip
  1138.  move.w (a7)+,d4
  1139.  dbra d3,drawrightside
  1140.  
  1141. objbehind:
  1142.  movem.l (a7)+,d0-d7/a0-a6
  1143.  rts
  1144.  
  1145. midx: dc.w 0
  1146. objpixwidth: dc.w 0
  1147. tmptst: dc.l 0
  1148. toppt: dc.l 0
  1149. doneit: dc.w 0
  1150. replaceend: dc.w 0
  1151. saveend: dc.w 0
  1152. midobj: dc.l 0
  1153. obadd: dc.l 0 
  1154. DOWN_STRIP: dc.w 0
  1155. WAD_PTR: dc.l 0
  1156. PTR_PTR: dc.l 0
  1157.  
  1158.  ds.w 100
  1159. objintocop:
  1160.  incbin "XTOCOPX"
  1161.  ds.w 100
  1162.  
  1163.    *********************************
  1164. ***************************************
  1165.    ********************************* 
  1166. tstddd: dc.l 0 
  1167.  
  1168. polybehind:
  1169.  rts
  1170.  
  1171. objbright:
  1172.  dc.w 0
  1173. ObjAng: dc.w 0
  1174.  
  1175. PolygonObj:
  1176.  
  1177. ************************
  1178.  
  1179. ; move.w 4(a0),d0    ; ypos
  1180. ; move.w 2(a0),d1
  1181. ; add.w #2,d1
  1182. ; add.w d1,d0
  1183. ; cmp.w #-48,d0
  1184. ; blt nobounce
  1185. ; neg.w d1
  1186. ; add.w d1,d0
  1187. ;nobounce:
  1188. ; move.w d1,2(a0)
  1189. ; move.w d0,4(a0)
  1190.  
  1191. ; add.w #80*2,boxang
  1192. ; and.w #8191,boxang
  1193.  
  1194. ************************
  1195.  
  1196.  move.w Facing(a0),ObjAng
  1197.  
  1198.  move.w (a0)+,d0
  1199.  move.w 2(a1,d0.w*8),d1    ; zpos of mid
  1200.  ble polybehind
  1201.  
  1202.  move.w (a0),d2
  1203.  move.w d1,d3
  1204.  asr.w #7,d3
  1205.  add.w d3,d2
  1206.  move.w d2,objbright
  1207.  
  1208.  move.w topclip,d2
  1209.  move.w botclip,d3
  1210.  
  1211.  move.w d2,objclipt
  1212.  move.w d3,objclipb
  1213.  
  1214. ; dont use d1 here.
  1215.  
  1216.  move.w 6(a0),d5
  1217.  move.l #POLYOBJECTS,a3
  1218.  move.l (a3,d5.w*4),a3
  1219.  
  1220.  move.l a3,START_OF_OBJ
  1221.  
  1222. *******************************************************************
  1223. ***************************************************************
  1224. *****************************************************************
  1225.  
  1226.  move.w (a3)+,num_points
  1227.  move.w (a3)+,d6    ; num_frames
  1228.  
  1229.  
  1230.  move.l a3,POINTER_TO_POINTERS
  1231.  lea (a3,d6.w*2),a3
  1232.  
  1233.  move.l a3,LinesPtr
  1234.  
  1235.  moveq #0,d5
  1236.  move.w 8(a0),d5
  1237.  
  1238. ************************************************
  1239. * Just for charles (animate automatically)
  1240. ; add.w #1,d5
  1241. ; cmp.w d6,d5
  1242. ; blt.s okless
  1243. ; moveq #0,d5
  1244. ;okless:
  1245. ; move.w d5,8(a0)
  1246. ************************************************ 
  1247.  
  1248.  move.l POINTER_TO_POINTERS,a4
  1249.  move.w (a4,d5.w*2),d5
  1250.  add.l START_OF_OBJ,d5
  1251.  move.l d5,PtsPtr
  1252.  move.l d5,a3
  1253.  move.w num_points,d5
  1254.  subq #1,d5
  1255.  
  1256.  move.l #boxrot,a4
  1257.  
  1258.  move.w ObjAng,d2
  1259.  sub.w #2048,d2
  1260.  sub.w angpos,d2
  1261.  and.w #8191,d2
  1262.  move.l #SineTable,a2
  1263.  lea (a2,d2.w),a5
  1264.  move.l #boxbrights,a6
  1265.      
  1266.  move.w (a5),d6
  1267.  move.w 2048(a5),d7
  1268.          
  1269. rotobj:
  1270.  move.w (a3),d2    ; xpt
  1271.  move.w 2(a3),d3    ; ypt
  1272.  move.w 4(a3),d4    ; zpt
  1273.  
  1274.  add.w d2,d2
  1275.  add.w d3,d3
  1276.  add.w d4,d4
  1277.  
  1278. ; first rotate around z axis.
  1279.  
  1280. ; move.w d2,d6
  1281. ; move.w d3,d7
  1282. ; muls 2048(a2),d3
  1283. ; muls (a2),d2
  1284. ; sub.l d3,d2    ; newx
  1285. ; muls (a2),d7
  1286. ; muls 2048(a2),d6
  1287. ; add.l d7,d6    ; newy
  1288. ; add.l d6,d6
  1289. ; swap d6
  1290. ; add.l d2,d2
  1291. ; swap d2
  1292. ; move.w d6,d3    ; newy
  1293.  
  1294.  muls d7,d4
  1295.  muls d6,d2
  1296.  sub.l d4,d2
  1297.  asr.l #8,d2
  1298.  move.l d2,(a4)+
  1299.  ext.l d3
  1300.  asl.l #7,d3
  1301.  move.l d3,(a4)+
  1302.  move.w (a3),d2
  1303.  move.w 4(a3),d4
  1304.  muls d6,d4
  1305.  muls d7,d2
  1306.  add.l d2,d4
  1307.  add.l d4,d4
  1308.  add.l d4,d4
  1309.  swap d4
  1310.  move.w d4,(a4)+
  1311.  
  1312.  add.w #20,d4
  1313.  asr.w #2,d4
  1314.  move.w d4,(a6)+
  1315.  
  1316.  addq #6,a3
  1317.  dbra d5,rotobj 
  1318.  
  1319.  move.l 4(a1,d0.w*8),d0    ; xpos of mid
  1320.  
  1321.  move.w num_points,d7
  1322.  move.l #boxrot,a2
  1323.  move.l #boxonscr,a3
  1324.  move.l #boxbrights,a6
  1325.  move.w 2(a0),d2
  1326.  subq #1,d7
  1327.  
  1328.  ext.l d2
  1329.  asl.l #7,d2
  1330.  sub.l yoff,d2
  1331. convtoscr
  1332.  move.l (a2),d3
  1333.  add.l d0,d3
  1334.  move.l d3,(a2)+
  1335.  move.l (a2),d4
  1336.  add.l d2,d4
  1337.  move.l d4,(a2)+
  1338.  move.w (a2),d5
  1339.  add.w d1,d5
  1340.  ble polybehind
  1341.  move.w d5,(a2)+
  1342.  
  1343.  divs d5,d3
  1344.  divs d5,d4
  1345.  add.w #MIDDLEX,d3
  1346.  add.w MIDDLEY,d4
  1347.  move.w d3,(a3)+
  1348.  move.w d4,(a3)+
  1349.  
  1350.  move.w (a6),d3
  1351.  
  1352.  cmp.w #31,d3
  1353.  ble.s okdark
  1354.  move.w #31,d3
  1355. okdark:
  1356.  cmp.w #0,d3
  1357.  bge.s okbr
  1358.  move.w #0,d3
  1359. okbr:
  1360.  move.w d3,(a6)+
  1361.  
  1362.  dbra d7,convtoscr
  1363.  
  1364.  move.l LinesPtr,a1
  1365.  
  1366. ; Now need to sort parts of object
  1367. ; into order.
  1368.  
  1369.  move.l #PartBuffer,a0
  1370.  move.l a0,a2
  1371.  move.w #31,d0
  1372. clrpartbuff:
  1373.  
  1374.  move.w #$8001,(a2)
  1375.  addq #4,a2
  1376.  
  1377.  dbra d0,clrpartbuff
  1378.  
  1379.  move.l #boxrot,a2
  1380.  
  1381. PutinParts
  1382.  move.w (a1)+,d7
  1383.  blt doneallparts
  1384.  
  1385.  move.w (a1)+,d6
  1386.  move.l (a2,d6.w),d0
  1387.  asr.l #7,d0
  1388.  muls d0,d0
  1389.  move.l 4(a2,d6.w),d2
  1390.  asr.l #7,d2
  1391.  muls d2,d2
  1392.  add.l d2,d0 
  1393.  move.w 8(a2,d6.w),d2
  1394.  muls d2,d2
  1395.  add.l d2,d0
  1396.  move.l #PartBuffer-8,a0
  1397.  
  1398. stillfront
  1399.  addq #8,a0
  1400.  cmp.l (a0),d0
  1401.  blt stillfront
  1402.  move.l #endparttab-8,a5
  1403. domoreshift:
  1404.  move.l -8(a5),(a5)
  1405.  move.l -4(a5),4(a5)
  1406.  subq #8,a5
  1407.  cmp.l a0,a5
  1408.  bgt.s domoreshift
  1409.  
  1410.  move.l d0,(a0)
  1411.  move.w d7,4(a0)
  1412.  
  1413.  bra PutinParts
  1414.  
  1415. doneallparts:
  1416.  
  1417.  move.l #PartBuffer,a0
  1418.  
  1419. Partloop:
  1420.  move.l (a0)+,d7
  1421.  blt nomoreparts
  1422.  
  1423.  moveq #0,d0
  1424.  move.w (a0),d0
  1425.  addq #4,a0
  1426.  add.l START_OF_OBJ,d0
  1427.  move.l d0,a1
  1428.  move.w #0,firstpt
  1429.  
  1430. polyloo:
  1431.  
  1432.  tst.w (a1)
  1433.  blt.s nomorepolys
  1434.  movem.l a0/a1/d7,-(a7)
  1435.  bsr doapoly
  1436.  movem.l (a7)+,a0/a1/d7
  1437.  
  1438.  move.w (a1),d0
  1439.  lea 18(a1,d0.w*4),a1
  1440.  
  1441.  bra.s polyloo
  1442. nomorepolys
  1443.  
  1444.  bra Partloop
  1445.  
  1446. nomoreparts:
  1447.  rts
  1448.  
  1449. firstpt: dc.w 0
  1450.  
  1451. PartBuffer:
  1452.  ds.w 2*32
  1453. endparttab:
  1454.  
  1455. polybright: dc.l 0
  1456.  
  1457. doapoly:
  1458.  
  1459.  move.w #960,Left
  1460.  move.w #-10,Right
  1461.  
  1462.  move.w (a1)+,d7    ; lines to draw 
  1463.  move.w (a1)+,preholes
  1464.  move.w 12(a1,d7.w*4),pregour
  1465.  move.l #boxonscr,a3
  1466.  move.w firstpt(pc),d0
  1467.  lea (a3,d0.w*4),a3
  1468.  
  1469.  move.w (a1),d0
  1470.  move.w 4(a1),d1
  1471.  move.w 8(a1),d2
  1472.  move.w 2(a3,d0.w*4),d3
  1473.  move.w 2(a3,d1.w*4),d4
  1474.  move.w 2(a3,d2.w*4),d5
  1475.  move.w (a3,d0.w*4),d0
  1476.  move.w (a3,d1.w*4),d1
  1477.  move.w (a3,d2.w*4),d2
  1478.  
  1479.  sub.w d1,d0    ;x1
  1480.  sub.w d1,d2    ;x2
  1481.  sub.w d4,d3    ;y1
  1482.  sub.w d4,d5    ;y2
  1483.  
  1484.  muls d3,d2
  1485.  muls d5,d0
  1486.  sub.l d0,d2
  1487.  ble polybehind
  1488.  move.l d2,polybright
  1489.  
  1490.  clr.b drawit
  1491.  
  1492.  tst.b Gouraud(pc)
  1493.  bne.s usegour
  1494.  bsr putinlines
  1495.  bra.s dontusegour
  1496. usegour:
  1497.  bsr putingourlines
  1498. dontusegour:
  1499.  
  1500.  move.w #320*2,linedir
  1501.  move.l FASTBUFFER,a6
  1502.  
  1503.  tst.b drawit(pc)
  1504.  beq polybehind
  1505.  
  1506.  move.l #PolyTopTab,a4
  1507.  move.w Left(pc),d1
  1508.  move.w Right(pc),d7
  1509.  
  1510.  move.w leftclipb,d3
  1511.  move.w rightclipb,d4
  1512.  cmp.w d3,d7
  1513.  ble polybehind
  1514.  cmp.w d4,d1
  1515.  bge polybehind
  1516.  cmp.w d3,d1
  1517.  bge .notop
  1518.  move.w d3,d1
  1519. .notop
  1520.  cmp.w d4,d7
  1521.  ble .nobot
  1522.  move.w d4,d7
  1523. .nobot
  1524.  
  1525.  lea (a4,d1.w*8),a4
  1526.  sub.w d1,d7
  1527.  ble polybehind
  1528.  move.w d1,a2
  1529.  add.w a2,a2
  1530. ; move.l #objintocop,a2
  1531. ; lea (a2,d1.w*2),a2
  1532.  moveq #0,d0
  1533.  
  1534.  move.w (a1)+,a0
  1535.  add.l #TextureMaps,a0
  1536.  move.l polybright,d1
  1537.  asl.l #4,d1
  1538.  divs (a1)+,d1
  1539.  
  1540.  tst.b Holes
  1541.  bne gotholesin
  1542.  tst.b Gouraud(pc)
  1543.  bne gotlurvelyshading
  1544.  
  1545.  move.l #objscalecols,a1
  1546.  neg.w d1
  1547.  add.w #14,d1
  1548.  move.w objbright(pc),d0
  1549.  add.w d0,d1
  1550.  bge.s toobright
  1551.  move.w #0,d1
  1552. toobright:
  1553.  move.w (a1,d1.w*2),d1
  1554.  asl.w #3,d1
  1555.  move.l #TexturePal,a1
  1556.  add.w d1,a1
  1557.  
  1558. dopoly:
  1559.  move.w #0,offtopby
  1560.  move.l a6,a3
  1561.  adda.w a2,a3
  1562.  addq #2,a2
  1563.  move.w (a4),d1
  1564.  cmp.w objclipb,d1
  1565.  bge nodl
  1566.  move.w PolyBotTab-PolyTopTab(a4),d2
  1567.  cmp.w objclipt,d2
  1568.  ble nodl
  1569.  cmp.w objclipt,d1
  1570.  bge.s nocl
  1571.  move.w objclipt,d3
  1572.  sub.w d1,d3
  1573.  move.w d3,offtopby
  1574.  move.w objclipt,d1
  1575. nocl: 
  1576.  move.w d2,d0
  1577.  cmp.w objclipb,d2
  1578.  ble.s nocr
  1579.  move.w objclipb,d2
  1580. nocr:
  1581.  
  1582.     ; d1=top end
  1583.     ; d2=bot end
  1584.     
  1585.  move.w 2+PolyBotTab-PolyTopTab(a4),d3
  1586.  move.w 4+PolyBotTab-PolyTopTab(a4),d4
  1587.     
  1588.  moveq #0,d5
  1589.  move.w 2(a4),d5
  1590.  move.w 4(a4),d6
  1591.  
  1592.  sub.w d5,d3
  1593.  sub.w d6,d4
  1594.  
  1595.  asl.w #8,d3
  1596.  asl.w #8,d4
  1597.  ext.l d3
  1598.  ext.l d4
  1599.  
  1600.  and.b #63,d5
  1601.  and.b #63,d6
  1602.  lsl.w #8,d6
  1603.  move.b d5,d6    ; starting pos
  1604.  moveq.l #0,d5
  1605.  move.w d6,d5
  1606.  
  1607.  sub.w d1,d2
  1608.  ble nodl
  1609.  
  1610.  move.w #0,tstdca
  1611.  sub.w d1,d0
  1612.  tst.w offtopby
  1613.  beq.s .notofftop
  1614.  move.l d3,-(a7)
  1615.  move.l d4,-(a7)
  1616.  add.w offtopby,d0
  1617.      
  1618.  muls offtopby,d3
  1619.  muls offtopby,d4
  1620.  divs d0,d3
  1621.  divs d0,d4
  1622.  asl.l #8,d3
  1623.  asl.l #8,d4
  1624.  move.w d3,tstdca
  1625.  swap d3
  1626.  swap d4
  1627.  and.w #63,d3
  1628.  and.w #63,d4
  1629.  asl.w #8,d4
  1630.  move.b d3,d4
  1631.  add.l d4,d5 
  1632.  move.l (a7)+,d4
  1633.  move.l (a7)+,d3
  1634. .notofftop: 
  1635.  
  1636.  divs d0,d3
  1637.  divs d0,d4
  1638.  ext.l d3
  1639.  ext.l d4
  1640.  asl.l #8,d3
  1641.  asl.l #8,d4
  1642.  
  1643.  move.w d3,a5
  1644.  swap d3
  1645.  swap d4
  1646.  asl.w #8,d4
  1647.  move.b d3,d4
  1648.  move.l d4,d6
  1649.  add.w #256,d6
  1650.  
  1651.  move.w tstdca,d3
  1652.  
  1653.  add.l ontoscr(pc,d1.w*4),a3
  1654.  move.w #63*256+63,d1
  1655.  and.w d1,d4
  1656.  and.w d1,d6
  1657.  moveq #0,d0
  1658.  subq #1,d2
  1659. drawpol:
  1660.  and.w d1,d5
  1661.  move.b (a0,d5.w*4),d0
  1662.  move.w (a1,d0.w*2),(a3)
  1663.  adda.w #320*2,a3
  1664.  add.w a5,d3
  1665.  addx.l d6,d5
  1666.  dbcs d2,drawpol2
  1667.  dbcc d2,drawpol
  1668.  bra.s pastit
  1669. drawpol2:
  1670.  and.w d1,d5
  1671.  move.b (a0,d5.w*4),d0
  1672.  move.w (a1,d0.w*2),(a3)
  1673.  adda.w #320*2,a3
  1674.  add.w a5,d3
  1675.  addx.l d4,d5
  1676.  dbcs d2,drawpol2
  1677.  dbcc d2,drawpol
  1678.  
  1679. pastit:
  1680.  
  1681. nodl:
  1682.  addq #8,a4
  1683.  dbra d7,dopoly
  1684.  
  1685.  rts
  1686.  
  1687. ontoscr:
  1688. val SET 0
  1689.  REPT 256
  1690.  dc.l val
  1691. val SET val+320*2
  1692.  ENDR
  1693.  
  1694. tstdca: dc.l 0
  1695. offtopby: dc.w 0
  1696. LinesPtr: dc.l 0
  1697. PtsPtr: dc.l 0
  1698.  
  1699. gotlurvelyshading:
  1700.  move.l #TexturePal,a1
  1701. ; neg.w d1
  1702. ; add.w #14,d1
  1703. ; bge.s toobrightg
  1704. ; move.w #0,d1
  1705. ;toobrightg:
  1706. ; asl.w #8,d1
  1707. ; lea (a1,d1.w*2),a1
  1708.  
  1709. dopolyg:
  1710.  move.l a6,a3
  1711.  move.w #0,offtopby
  1712.  adda.w a2,a3
  1713.  addq #2,a2
  1714.  move.w (a4),d1
  1715.  cmp.w objclipb,d1
  1716.  bge nodlg
  1717.  moveq #0,d2
  1718.  move.w PolyBotTab-PolyTopTab(a4),d2
  1719.  cmp.w objclipt(pc),d2
  1720.  ble nodlg
  1721.  cmp.w objclipt(pc),d1
  1722.  bge.s noclg
  1723.  move.w objclipt,d3
  1724.  sub.w d1,d3
  1725.  move.w d3,offtopby
  1726.  move.w objclipt(pc),d1
  1727. noclg: 
  1728.  move.w d2,d0
  1729.  cmp.w objclipb(pc),d2
  1730.  ble.s nocrg
  1731.  move.w objclipb(pc),d2
  1732. nocrg:
  1733.  
  1734.     ; d1=top end
  1735.     ; d2=bot end
  1736.     
  1737.  move.w 2+PolyBotTab-PolyTopTab(a4),d3
  1738.  move.w 4+PolyBotTab-PolyTopTab(a4),d4
  1739.     
  1740.  moveq #0,d5
  1741.  move.w 2(a4),d5
  1742.  move.w 4(a4),d6
  1743.  
  1744.  sub.w d5,d3
  1745.  sub.w d6,d4
  1746.  
  1747.  asl.w #8,d3
  1748.  asl.w #8,d4
  1749.  ext.l d3
  1750.  ext.l d4
  1751.  
  1752.  and.b #63,d5
  1753.  and.b #63,d6
  1754.  lsl.w #8,d6
  1755.  move.b d5,d6    ; starting pos
  1756.  moveq.l #0,d5
  1757.  move.w d6,d5
  1758.  
  1759.  sub.w d1,d2
  1760.  ble nodlg
  1761.  
  1762.  move.w #0,tstdca
  1763.  sub.w d1,d0
  1764.  tst.w offtopby
  1765.  beq.s .notofftop
  1766.  move.l d3,-(a7)
  1767.  move.l d4,-(a7)
  1768.  add.w offtopby,d0
  1769.  
  1770.  muls offtopby,d3
  1771.  muls offtopby,d4
  1772.  divs d0,d3
  1773.  divs d0,d4
  1774.  asl.l #8,d3
  1775.  asl.l #8,d4
  1776.  move.w d3,tstdca
  1777.  swap d3
  1778.  swap d4
  1779.  and.w #63,d3
  1780.  and.w #63,d4
  1781.  asl.w #8,d4
  1782.  move.b d3,d4
  1783.  add.l d4,d5
  1784.  move.l (a7)+,d4
  1785.  move.l (a7)+,d3
  1786. .notofftop
  1787.  
  1788.  divs d0,d3
  1789.  divs d0,d4
  1790.  ext.l d3
  1791.  ext.l d4
  1792.  asl.l #8,d3
  1793.  asl.l #8,d4
  1794.  
  1795.  add.l ontoscrg(pc,d1.w*4),a3
  1796.  move.w 6+PolyBotTab-PolyTopTab(a4),d1
  1797.  move.w 6(a4),d6
  1798.  sub.w d6,d1
  1799.  swap d1
  1800.  clr.w d1
  1801.  asr.l #8,d1
  1802.  divs d0,d1
  1803.  asl.l #8,d1
  1804.  swap d1
  1805.  asl.w #8,d1
  1806.  
  1807.  move.w d3,d0
  1808.  swap d0
  1809.  move.w d1,d0
  1810.  move.w d2,d1
  1811.  move.l d1,d2
  1812.  move.l d0,a5
  1813.  move.w tstdca,d0
  1814.  swap d0
  1815.  move.w d6,d0
  1816.  asl.w #8,d0
  1817.  swap d3
  1818.  swap d4
  1819.  asl.w #8,d4
  1820.  move.b d3,d4
  1821.  move.l d4,d6
  1822.  add.w #256,d6
  1823.  
  1824.  moveq #0,d1
  1825.  move.w #63*256+63,d1
  1826.  and.w d1,d4
  1827.  and.w d1,d6
  1828.  dbra d2,drawpolg
  1829.  
  1830. ontoscrg:
  1831. val SET 0
  1832.  REPT 256
  1833.  dc.l val
  1834. val SET val+320*2
  1835.  ENDR
  1836.  
  1837. drawpolg: 
  1838.  and.w #63*256+63,d5
  1839.  move.b (a0,d5.w*4),d0
  1840.  move.w (a1,d0.w*2),(a3)
  1841.  adda.w #320*2,a3
  1842.  add.l d2,d1
  1843.  bcc.s nonewb
  1844.  add.w #256,d0
  1845. nonewb:
  1846.  add.l a5,d0
  1847.  addx.l d6,d5
  1848.  dbcs d2,drawpol2g
  1849.  dbcc d2,drawpolg
  1850.  bra.s pastitg
  1851. drawpol2g:
  1852.  and.w #63*256+63,d5
  1853.  move.b (a0,d5.w*4),d0
  1854.  move.w (a1,d0.w*2),(a3)
  1855.  adda.w #320*2,a3
  1856.  add.l d2,d1
  1857.  bcc.s nonewb2
  1858.  add.w #256,d0
  1859. nonewb2:
  1860.  add.l a5,d0
  1861.  addx.l d4,d5
  1862.  dbcs d2,drawpol2g
  1863.  dbcc d2,drawpolg
  1864.  
  1865. pastitg:
  1866.  
  1867. nodlg:
  1868.  addq #8,a4
  1869.  dbra d7,dopolyg
  1870.  
  1871.  rts
  1872.  
  1873.  
  1874.  
  1875. gotholesin:
  1876.  move.l #TexturePal,a1
  1877.  neg.w d1
  1878.  add.w #14,d1
  1879.  bge.s toobrighth
  1880.  move.w #0,d1
  1881. toobrighth:
  1882.  asl.w #8,d1
  1883.  lea (a1,d1.w*2),a1
  1884.  
  1885. dopolyh:
  1886.  move.l a6,a3
  1887.  adda.w (a2)+,a3
  1888.  move.w (a4),d1
  1889.  cmp.w objclipb,d1
  1890.  bge nodlh
  1891.  move.w PolyBotTab-PolyTopTab(a4),d2
  1892.  cmp.w objclipt,d2
  1893.  ble nodlh
  1894.  cmp.w objclipt,d1
  1895.  bge.s noclh
  1896.  move.w objclipt,d1
  1897. noclh: 
  1898.  move.w d2,d0
  1899.  cmp.w objclipb,d2
  1900.  ble.s nocrh
  1901.  move.w objclipb,d2
  1902. nocrh:
  1903.  
  1904.     ; d1=top end
  1905.     ; d2=bot end
  1906.     
  1907.  move.w 2+PolyBotTab-PolyTopTab(a4),d3
  1908.  move.w 4+PolyBotTab-PolyTopTab(a4),d4
  1909.     
  1910.  moveq #0,d5
  1911.  move.w 2(a4),d5
  1912.  move.w 4(a4),d6
  1913.  
  1914.  sub.w d5,d3
  1915.  sub.w d6,d4
  1916.  
  1917.  asl.w #8,d3
  1918.  asl.w #8,d4
  1919.  ext.l d3
  1920.  ext.l d4
  1921.  
  1922.  and.b #63,d5
  1923.  and.b #63,d6
  1924.  lsl.w #8,d6
  1925.  move.b d5,d6    ; starting pos
  1926.  moveq #-1,d5
  1927.  lsr.l #1,d5
  1928.  move.w d6,d5
  1929.  
  1930.  sub.w d1,d2
  1931.  ble nodlh
  1932.  
  1933.  sub.w d1,d0
  1934.  
  1935.  divs d0,d3
  1936.  divs d0,d4
  1937.  ext.l d3
  1938.  ext.l d4
  1939.  asl.l #8,d3
  1940.  asl.l #8,d4
  1941.  move.w d3,a5
  1942.  swap d3
  1943.  swap d4
  1944.  asl.w #8,d4
  1945.  move.b d3,d4
  1946.  move.l d4,d6
  1947.  add.w #256,d6
  1948.  
  1949.  moveq #-1,d3
  1950.  lsr.w #1,d3
  1951.  
  1952.  add.l ontoscrh(pc,d1.w*4),a3
  1953.  move.w #63*256+63,d1
  1954.  and.w d1,d4
  1955.  and.w d1,d6
  1956.  moveq #0,d0
  1957.  subq #1,d2
  1958.  
  1959. drawpolh:
  1960.  and.w d1,d5
  1961.  move.b (a0,d5.w*4),d0
  1962.  beq.s dontplot
  1963.  move.w (a1,d0.w*2),(a3)
  1964. dontplot:
  1965.  adda.w #104*4,a3
  1966.  add.w a5,d3
  1967.  addx.l d6,d5
  1968.  dbcs d2,drawpol2h
  1969.  dbcc d2,drawpolh
  1970.  bra.s pastith
  1971. drawpol2h:
  1972.  and.w d1,d5
  1973.  move.b (a0,d5.w*4),d0
  1974.  beq.s dontplot2
  1975.  move.w (a1,d0.w*2),(a3)
  1976. dontplot2:
  1977.  adda.w #104*4,a3
  1978.  add.w a5,d3
  1979.  addx.l d4,d5
  1980.  dbcs d2,drawpol2h
  1981.  dbcc d2,drawpolh
  1982.  
  1983. pastith:
  1984.  
  1985. nodlh:
  1986.  addq #8,a4
  1987.  dbra d7,dopolyh
  1988.  
  1989.  rts
  1990.  
  1991. ontoscrh:
  1992. val SET 0
  1993.  REPT 160
  1994.  dc.l val
  1995. val SET val+192*4
  1996.  ENDR
  1997.  
  1998.  EVEN
  1999. pregour:
  2000.  dc.b 0
  2001. Gouraud:
  2002.  dc.b 0
  2003. preholes:
  2004.  dc.b 0
  2005. Holes: 
  2006.  dc.b 0
  2007.  
  2008. putinlines:
  2009.  
  2010.  move.w (a1),d0
  2011.  move.w 4(a1),d1
  2012.  
  2013.  move.w (a3,d0.w*4),d2
  2014.  move.w 2(a3,d0.w*4),d3
  2015.  move.w (a3,d1.w*4),d4
  2016.  move.w 2(a3,d1.w*4),d5
  2017.  
  2018.  cmp.w d2,d4
  2019.  beq thislineflat
  2020.  bgt thislineontop
  2021.  move.l #PolyBotTab,a4
  2022.  exg d2,d4
  2023.  exg d3,d5
  2024.  
  2025.  cmp.w rightclipb,d2
  2026.  bge thislineflat
  2027.  cmp.w leftclipb,d4
  2028.  ble thislineflat
  2029.  move.w rightclipb,d6
  2030.  sub.w d4,d6
  2031.  ble.s .clipr
  2032.  move.w #0,-(a7)
  2033.  cmp.w Right(pc),d4
  2034.  ble.s .nonewbot
  2035.  move.w d4,Right
  2036.  bra.s .nonewbot
  2037.  
  2038. .clipr
  2039.  move.w d6,-(a7)
  2040.  move.w rightclipb,Right
  2041.  sub.w #1,Right
  2042. .nonewbot:
  2043.  
  2044.  move.w #0,offleftby
  2045.  move.w d2,d6
  2046.  cmp.w leftclipb,d6
  2047.  bge .okt
  2048.  move.w leftclipb,d6
  2049.  sub.w d2,d6
  2050.  move.w d6,offleftby
  2051.  add.w d2,d6
  2052. .okt:
  2053.  
  2054.  st drawit
  2055.  lea (a4,d6.w*8),a4
  2056.  cmp.w Left(pc),d6
  2057.  bge.s .nonewtop
  2058.  move.w d6,Left
  2059. .nonewtop
  2060.  
  2061.  sub.w d3,d5    ; dy
  2062.  swap d3
  2063.  clr.w d3    ; d2=xpos
  2064.  sub.w d2,d4    ; dx > 0
  2065.  swap d5
  2066.  clr.w d5
  2067.  asr.l #8,d5
  2068.  divs d4,d5
  2069.  ext.l d5
  2070.  asl.l #8,d5    ; dx constant
  2071.  moveq #0,d2
  2072.  move.b 2(a1),d2
  2073.  moveq #0,d6
  2074.  move.b 6(a1),d6
  2075.  sub.w d6,d2
  2076.  swap d2
  2077.  swap d6
  2078.  clr.w d2
  2079.  clr.w d6    ; d6=xbitpos
  2080.  asr.l #8,d2
  2081.  divs d4,d2
  2082.  ext.l d2
  2083.  asl.l #8,d2    ; d3=xbitconst
  2084.  move.l d5,a5    ; a5=dy constant
  2085.  move.l d2,a6    ; a6=xbitconst
  2086.  
  2087.  moveq #0,d5
  2088.  move.b 3(a1),d5
  2089.  moveq #0,d2
  2090.  move.b 7(a1),d2
  2091.  sub.w d2,d5
  2092.  swap d2
  2093.  swap d5
  2094.  clr.w d2    ; d3=ybitpos
  2095.  clr.w d5
  2096.  asr.l #8,d5
  2097.  divs d4,d5
  2098.  ext.l d5
  2099.  asl.l #8,d5    ; d4=ybitconst
  2100.  
  2101.  
  2102.  add.w (a7)+,d4
  2103.  sub.w offleftby(pc),d4
  2104.  blt thislineflat
  2105.  
  2106.  tst.w offleftby(pc)
  2107.  beq.s .noneoffleft
  2108.  move.w d4,-(a7)
  2109.  move.w offleftby(pc),d4
  2110.  dbra d4,.calcnodraw
  2111.  bra .nodrawoffleft
  2112. .calcnodraw
  2113.  add.l a5,d3
  2114.  add.l a6,d6
  2115.  add.l d5,d2
  2116.  dbra d4,.calcnodraw
  2117. .nodrawoffleft:
  2118.  move.w (a7)+,d4
  2119. .noneoffleft:
  2120.  
  2121. .putinline:
  2122.  
  2123.  swap d3
  2124.  move.w d3,(a4)+
  2125.  swap d3
  2126.  swap d6
  2127.  move.w d6,(a4)+
  2128.  swap d6
  2129.  swap d2
  2130.  move.w d2,(a4)
  2131.  addq #4,a4
  2132.  swap d2
  2133.  
  2134.  add.l a5,d3
  2135.  add.l a6,d6
  2136.  add.l d5,d2
  2137.  
  2138.  dbra d4,.putinline
  2139.  
  2140.  bra thislineflat
  2141.  
  2142. thislineontop:
  2143.  move.l #PolyTopTab,a4
  2144.  
  2145.  cmp.w rightclipb,d2
  2146.  bge thislineflat
  2147.  cmp.w leftclipb,d4
  2148.  ble thislineflat
  2149.  move.w rightclipb,d6
  2150.  sub.w d4,d6
  2151.  ble.s .clipr
  2152.  move.w #0,-(a7)
  2153.  cmp.w Right(pc),d4
  2154.  ble.s .nonewbot
  2155.  move.w d4,Right
  2156.  bra.s .nonewbot
  2157.  
  2158. .clipr
  2159.  move.w d6,-(a7)
  2160.  move.w rightclipb,Right
  2161.  sub.w #1,Right
  2162. .nonewbot:
  2163.  
  2164.  move.w #0,offleftby
  2165.  move.w d2,d6
  2166.  cmp.w leftclipb,d6
  2167.  bge .okt
  2168.  move.w leftclipb,d6
  2169.  sub.w d2,d6
  2170.  move.w d6,offleftby
  2171.  add.w d2,d6
  2172. .okt:
  2173.  
  2174.  st drawit
  2175.  lea (a4,d6.w*8),a4
  2176.  cmp.w Left(pc),d6
  2177.  bge.s .nonewtop
  2178.  move.w d6,Left
  2179. .nonewtop
  2180.  
  2181.  sub.w d3,d5    ; dy
  2182.  swap d3
  2183.  clr.w d3    ; d2=xpos
  2184.  sub.w d2,d4    ; dx > 0
  2185.  swap d5
  2186.  clr.w d5
  2187.  asr.l #8,d5
  2188.  divs d4,d5
  2189.  ext.l d5
  2190.  asl.l #8,d5    ; dx constant
  2191.  moveq #0,d2
  2192.  move.b 6(a1),d2
  2193.  moveq #0,d6
  2194.  move.b 2(a1),d6
  2195.  sub.w d6,d2
  2196.  swap d2
  2197.  swap d6
  2198.  clr.w d2
  2199.  clr.w d6    ; d6=xbitpos
  2200.  asr.l #8,d2
  2201.  divs d4,d2
  2202.  ext.l d2
  2203.  asl.l #8,d2    ; d3=xbitconst
  2204.  move.l d5,a5    ; a5=dy constant
  2205.  move.l d2,a6    ; a6=xbitconst
  2206.  
  2207.  moveq #0,d5
  2208.  move.b 7(a1),d5
  2209.  moveq #0,d2
  2210.  move.b 3(a1),d2
  2211.  sub.w d2,d5
  2212.  swap d2
  2213.  swap d5
  2214.  clr.w d2    ; d3=ybitpos
  2215.  clr.w d5
  2216.  asr.l #8,d5
  2217.  divs d4,d5
  2218.  ext.l d5
  2219.  asl.l #8,d5    ; d4=ybitconst
  2220.  
  2221.  add.w (a7)+,d4
  2222.  sub.w offleftby(pc),d4
  2223.  blt.s thislineflat
  2224.  
  2225.  tst.w offleftby(pc)
  2226.  beq.s .noneoffleft
  2227.  move.w d4,-(a7)
  2228.  move.w offleftby(pc),d4
  2229.  dbra d4,.calcnodraw
  2230.  bra .nodrawoffleft
  2231. .calcnodraw
  2232.  add.l a5,d3
  2233.  add.l a6,d6
  2234.  add.l d5,d2
  2235.  dbra d4,.calcnodraw
  2236. .nodrawoffleft:
  2237.  move.w (a7)+,d4
  2238. .noneoffleft:
  2239.  
  2240.  
  2241. .putinline:
  2242.  
  2243.  swap d3
  2244.  move.w d3,(a4)+
  2245.  swap d3
  2246.  swap d6
  2247.  move.w d6,(a4)+
  2248.  swap d6
  2249.  swap d2
  2250.  move.w d2,(a4)
  2251.  addq #4,a4
  2252.  swap d2
  2253.  
  2254.  add.l a5,d3
  2255.  add.l a6,d6
  2256.  add.l d5,d2
  2257.  
  2258.  dbra d4,.putinline
  2259.  
  2260. thislineflat:
  2261.  addq #4,a1
  2262.  dbra d7,putinlines
  2263.  addq #4,a1
  2264.  rts
  2265.  
  2266. putingourlines:
  2267.  
  2268.  move.l #boxbrights,a2
  2269.  move.w firstpt,d0
  2270.  lea (a2,d0.w*2),a2
  2271.  
  2272. piglloop:
  2273.  
  2274.  move.w (a1),d0
  2275.  move.w 4(a1),d1
  2276.  
  2277.  move.w (a3,d0.w*4),d2
  2278.  move.w 2(a3,d0.w*4),d3
  2279.  move.w (a3,d1.w*4),d4
  2280.  move.w 2(a3,d1.w*4),d5
  2281.  
  2282.  cmp.w d2,d4
  2283.  beq thislineflatgour
  2284.  bgt thislineontopgour
  2285.  move.l #PolyBotTab,a4
  2286.  exg d2,d4
  2287.  exg d3,d5
  2288.  
  2289.  cmp.w rightclipb,d2
  2290.  bge thislineflatgour
  2291.  cmp.w leftclipb,d4
  2292.  ble thislineflatgour
  2293.  move.w rightclipb,d6
  2294.  sub.w d4,d6
  2295.  ble.s .clipr
  2296.  move.w #0,-(a7)
  2297.  cmp.w Right(pc),d4
  2298.  ble.s .nonewbot
  2299.  move.w d4,Right
  2300.  bra.s .nonewbot
  2301.  
  2302. .clipr
  2303.  move.w d6,-(a7)
  2304.  move.w rightclipb,Right
  2305.  sub.w #1,Right
  2306. .nonewbot:
  2307.  
  2308.  move.w #0,offleftby
  2309.  move.w d2,d6
  2310.  cmp.w leftclipb,d6
  2311.  bge .okt
  2312.  move.w leftclipb,d6
  2313.  sub.w d2,d6
  2314.  move.w d6,offleftby
  2315.  add.w d2,d6
  2316. .okt:
  2317.  
  2318.  
  2319.  st drawit
  2320.  lea (a4,d6.w*8),a4
  2321.  cmp.w Left(pc),d6
  2322.  bge.s .nonewtop
  2323.  move.w d6,Left
  2324. .nonewtop
  2325.  
  2326.  sub.w d3,d5    ; dy
  2327.  swap d3
  2328.  clr.w d3    ; d2=xpos
  2329.  sub.w d2,d4    ; dx > 0
  2330.  swap d5
  2331.  clr.w d5
  2332.  asr.l #8,d5
  2333.  divs d4,d5
  2334.  ext.l d5
  2335.  asl.l #8,d5    ; dx constant
  2336.  moveq #0,d2
  2337.  move.b 2(a1),d2
  2338.  moveq #0,d6
  2339.  move.b 6(a1),d6
  2340.  sub.w d6,d2
  2341.  swap d2
  2342.  swap d6
  2343.  clr.w d2
  2344.  clr.w d6    ; d6=xbitpos
  2345.  asr.l #8,d2
  2346.  divs d4,d2
  2347.  ext.l d2
  2348.  asl.l #8,d2    ; d3=xbitconst
  2349.  move.l d5,a5    ; a5=dy constant
  2350.  move.l d2,a6    ; a6=xbitconst
  2351.  
  2352.  moveq #0,d5
  2353.  move.b 3(a1),d5
  2354.  moveq #0,d2
  2355.  move.b 7(a1),d2
  2356.  sub.w d2,d5
  2357.  swap d2
  2358.  swap d5
  2359.  clr.w d2    ; d3=ybitpos
  2360.  clr.w d5
  2361.  asr.l #8,d5
  2362.  divs d4,d5
  2363.  ext.l d5
  2364.  asl.l #8,d5    ; d4=ybitconst
  2365.  
  2366.  move.w (a2,d1.w*2),d1
  2367.  move.w (a2,d0.w*2),d0
  2368.  sub.w d1,d0
  2369.  swap d0
  2370.  swap d1
  2371.  clr.w d0
  2372.  clr.w d1
  2373.  asr.l #8,d0
  2374.  divs d4,d0
  2375.  ext.l d0
  2376.  asl.l #8,d0
  2377.  
  2378.  add.w (a7)+,d4
  2379.  sub.w offleftby(pc),d4
  2380.  blt thislineflatgour
  2381.  
  2382.  tst.w offleftby(pc)
  2383.  beq.s .noneoffleft
  2384.  move.w d4,-(a7)
  2385.  move.w offleftby(pc),d4
  2386.  dbra d4,.calcnodraw
  2387.  bra .nodrawoffleft
  2388. .calcnodraw
  2389.  add.l d0,d1
  2390.  add.l a5,d3
  2391.  add.l a6,d6
  2392.  add.l d5,d2
  2393.  dbra d4,.calcnodraw
  2394. .nodrawoffleft:
  2395.  move.w (a7)+,d4
  2396. .noneoffleft:
  2397.  
  2398. .putinline:
  2399.  
  2400.  swap d3
  2401.  move.w d3,(a4)+
  2402.  swap d3
  2403.  swap d6
  2404.  move.w d6,(a4)+
  2405.  swap d6
  2406.  swap d2
  2407.  move.w d2,(a4)+
  2408.  swap d2
  2409.  swap d1
  2410.  move.w d1,(a4)+
  2411.  swap d1
  2412.  
  2413.  add.l d0,d1
  2414.  add.l a5,d3
  2415.  add.l a6,d6
  2416.  add.l d5,d2
  2417.  
  2418.  dbra d4,.putinline
  2419.  
  2420.  bra thislineflatgour
  2421.  
  2422. thislineontopgour:
  2423.  move.l #PolyTopTab,a4
  2424.  
  2425.  cmp.w rightclipb,d2
  2426.  bge thislineflatgour
  2427.  cmp.w leftclipb,d4
  2428.  ble thislineflatgour
  2429.  move.w rightclipb,d6
  2430.  sub.w d4,d6
  2431.  ble.s .clipr
  2432.  move.w #0,-(a7)
  2433.  cmp.w Right(pc),d4
  2434.  ble.s .nonewbot
  2435.  move.w d4,Right
  2436.  bra.s .nonewbot
  2437.  
  2438. .clipr
  2439.  move.w d6,-(a7)
  2440.  move.w rightclipb,Right
  2441.  sub.w #1,Right
  2442. .nonewbot:
  2443.  
  2444.  move.w #0,offleftby
  2445.  move.w d2,d6
  2446.  cmp.w leftclipb,d6
  2447.  bge .okt
  2448.  move.w leftclipb,d6
  2449.  sub.w d2,d6
  2450.  move.w d6,offleftby
  2451.  add.w d2,d6
  2452. .okt:
  2453.  
  2454.  st drawit
  2455.  lea (a4,d6.w*8),a4
  2456.  cmp.w Left(pc),d6
  2457.  bge.s .nonewtop
  2458.  move.w d6,Left
  2459. .nonewtop
  2460.  
  2461.  sub.w d3,d5    ; dy
  2462.  swap d3
  2463.  clr.w d3    ; d2=xpos
  2464.  sub.w d2,d4    ; dx > 0
  2465.  swap d5
  2466.  clr.w d5
  2467.  asr.l #8,d5
  2468.  divs d4,d5
  2469.  ext.l d5
  2470.  asl.l #8,d5    ; dx constant
  2471.  moveq #0,d2
  2472.  move.b 6(a1),d2
  2473.  moveq #0,d6
  2474.  move.b 2(a1),d6
  2475.  sub.w d6,d2
  2476.  swap d2
  2477.  swap d6
  2478.  clr.w d2
  2479.  clr.w d6    ; d6=xbitpos
  2480.  asr.l #8,d2
  2481.  divs d4,d2
  2482.  ext.l d2
  2483.  asl.l #8,d2    ; d3=xbitconst
  2484.  move.l d5,a5    ; a5=dy constant
  2485.  move.l d2,a6    ; a6=xbitconst
  2486.  
  2487.  moveq #0,d5
  2488.  move.b 7(a1),d5
  2489.  moveq #0,d2
  2490.  move.b 3(a1),d2
  2491.  sub.w d2,d5
  2492.  swap d2
  2493.  swap d5
  2494.  clr.w d2    ; d3=ybitpos
  2495.  clr.w d5
  2496.  asr.l #8,d5
  2497.  divs d4,d5
  2498.  ext.l d5
  2499.  asl.l #8,d5    ; d4=ybitconst
  2500.  
  2501.  move.w (a2,d1.w*2),d1
  2502.  move.w (a2,d0.w*2),d0
  2503.  sub.w d0,d1
  2504.  swap d0
  2505.  swap d1
  2506.  clr.w d0
  2507.  clr.w d1
  2508.  asr.l #8,d1
  2509.  divs d4,d1
  2510.  ext.l d1
  2511.  asl.l #8,d1
  2512.  
  2513.  add.w (a7)+,d4
  2514.  sub.w offleftby(pc),d4
  2515.  blt.s thislineflatgour
  2516.  
  2517.  tst.w offleftby(pc)
  2518.  beq.s .noneoffleft
  2519.  move.w d4,-(a7)
  2520.  move.w offleftby(pc),d4
  2521.  dbra d4,.calcnodraw
  2522.  bra .nodrawoffleft
  2523. .calcnodraw
  2524.  add.l d1,d0
  2525.  add.l a5,d3
  2526.  add.l a6,d6
  2527.  add.l d5,d2
  2528.  dbra d4,.calcnodraw
  2529. .nodrawoffleft:
  2530.  move.w (a7)+,d4
  2531. .noneoffleft:
  2532.  
  2533.  
  2534. .putinline:
  2535.  
  2536.  swap d3
  2537.  move.w d3,(a4)+
  2538.  swap d3
  2539.  swap d6
  2540.  move.w d6,(a4)+
  2541.  swap d6
  2542.  swap d2
  2543.  move.w d2,(a4)+
  2544.  swap d2
  2545.  swap d0
  2546.  move.w d0,(a4)+
  2547.  swap d0
  2548.  
  2549.  add.l d1,d0
  2550.  add.l a5,d3
  2551.  add.l a6,d6
  2552.  add.l d5,d2
  2553.  
  2554.  dbra d4,.putinline
  2555.  
  2556. thislineflatgour:
  2557.  addq #4,a1
  2558.  dbra d7,piglloop
  2559.  addq #4,a1
  2560.  rts
  2561.  
  2562. offleftby: dc.w 0
  2563. Left: dc.w 0
  2564. Right: dc.w 0
  2565.  
  2566. POINTER_TO_POINTERS: dc.l 0
  2567. START_OF_OBJ: dc.l 0
  2568. num_points: dc.w 0
  2569.  
  2570. POLYOBJECTS:
  2571.  dc.l Spider_des
  2572.  dc.l Medi_des
  2573.  dc.l Exit_des
  2574.  dc.l Crate_des
  2575.  dc.l Terminal_des
  2576.  dc.l Blue_des
  2577.  dc.l Green_des
  2578.  dc.l Red_des
  2579.  dc.l Yellow_des
  2580.  dc.l Gas_des
  2581.  dc.l Torch_des
  2582.  
  2583. Spider_des:
  2584.  incbin "ab3:vectobj/robot"
  2585. Medi_des:
  2586.  incbin "ab3:includes/medipac.vec"
  2587. Exit_des:
  2588.  incbin "ab3:vectobj/exitsign
  2589. Crate_des:
  2590.  incbin "ab3:vectobj/mug"
  2591. Terminal_des:
  2592.  incbin "ab3:includes/terminal.vec"
  2593. Blue_des:
  2594.  incbin "ab3:vectobj/blueind"
  2595. Green_des:
  2596.  incbin "ab3:vectobj/Greenind"
  2597. Red_des:
  2598.  incbin "ab3:vectobj/Redind"
  2599. Yellow_des:
  2600.  incbin "ab3:vectobj/yellowind"
  2601. Gas_des:
  2602.  incbin "ab3:vectobj/gaspipe"
  2603. Torch_des:
  2604.  incbin "ab3:vectobj/torch"
  2605.  
  2606. boxonscr:
  2607.  ds.l 250*2
  2608. boxrot: ds.l 3*250
  2609.  
  2610. boxbrights: 
  2611.     dc.w 0
  2612.     dc.w 12
  2613.     dc.w 12
  2614.     dc.w 12
  2615.  dc.w 12
  2616.     dc.w 0
  2617.     ds.w 50
  2618.  
  2619. boxang: dc.w 0 
  2620.  
  2621.  ds.w 320*4
  2622. PolyBotTab: ds.w 320*4
  2623.  ds.w 320*4
  2624. PolyTopTab: ds.w 320*4
  2625.  ds.w 320*4
  2626.  
  2627. offset:
  2628.  dc.w 0
  2629. timer:
  2630.  dc.w 0
  2631.  
  2632. Objects:
  2633. ; Lookup table for OBJECT GRAPHIC TYPE
  2634. ; in object data (offset 8)
  2635. ;0
  2636.  dc.l ALIEN_WAD,ALIEN_PTR,ALIEN_FRAMES,ALIEN_PAL
  2637. ;1
  2638.  dc.l PICKUPS_WAD,PICKUPS_PTR,PICKUPS_FRAMES,PICKUPS_PAL
  2639. ;2
  2640.  dc.l BIGBULLET_WAD,BIGBULLET_PTR,BIGBULLET_FRAMES,BIGBULLET_PAL
  2641. ;3
  2642.  dc.l UGLYMONSTER_WAD,UGLYMONSTER_PTR,UGLYMONSTER_FRAMES,UGLYMONSTER_PAL
  2643. ;4
  2644.  dc.l FLYINGMONSTER_WAD,FLYINGMONSTER_PTR,FLYINGMONSTER_FRAMES,FLYINGMONSTER_PAL
  2645. ;5
  2646.  dc.l KEYS_WAD,KEYS_PTR,KEYS_FRAMES,KEYS_PAL
  2647. ;6
  2648.  dc.l ROCKETS_WAD,ROCKETS_PTR,ROCKETS_FRAMES,ROCKETS_PAL
  2649. ;7
  2650.  dc.l BARREL_WAD,BARREL_PTR,BARREL_FRAMES,BARREL_PAL
  2651. ;8
  2652.  dc.l BIGBULLET_WAD,BIGBULLET_PTR,EXPLOSION_FRAMES,EXPLOSION_PAL
  2653. ;9
  2654.  dc.l GUNS_WAD,GUNS_PTR,GUNS_FRAMES,GUNS_PAL
  2655. ;10:
  2656.  dc.l MARINE_WAD,MARINE_PTR,MARINE_FRAMES,MARINE_PAL
  2657. ;11:
  2658.  dc.l BIGALIEN_WAD,BIGALIEN_PTR,BIGALIEN_FRAMES,BIGALIEN_PAL
  2659. ;12:
  2660.  dc.l 0,0,LAMPS_FRAMES,LAMPS_PAL
  2661. ;13:
  2662.  dc.l 0,0,WORM_FRAMES,WORM_PAL
  2663. ;14:
  2664.  dc.l 0,0,BIGCLAWS_FRAMES,BIGCLAWS_PAL
  2665. ;15:
  2666.  dc.l 0,0,TREE_FRAMES,TREE_PAL
  2667. ;16:
  2668.  dc.l 0,0,TOUGHMARINE_FRAMES,TOUGHMARINE_PAL
  2669. ;17:
  2670.  dc.l 0,0,FLAMEMARINE_FRAMES,FLAMEMARINE_PAL
  2671. ;18:
  2672.  dc.l 0,0,GLARE_FRAMES,0
  2673.  
  2674. GLARE_FRAMES:
  2675.  dc.w 0,0
  2676.  dc.w 32*4,0
  2677.  dc.w 32*4*2,0
  2678.  dc.w 32*4*3,0
  2679.  
  2680.  dc.w 0,32
  2681.  dc.w 32*4,32
  2682.  dc.w 32*4*2,32
  2683.  dc.w 32*4*3,32
  2684.  
  2685. ALIEN_WAD:
  2686. ; incbin "ALIEN2.wad"
  2687. ALIEN_PTR:
  2688. ; incbin "ALIEN2.ptr"
  2689. ALIEN_FRAMES:
  2690. ; walking=0-3
  2691.  dc.w 0,0
  2692.  dc.w 64*4,0 
  2693.  dc.w 64*4*2,0
  2694.  dc.w 64*4*3,0
  2695.  dc.w 64*4*4,0
  2696.  dc.w 64*4*5,0
  2697.  dc.w 64*4*6,0
  2698.  dc.w 64*4*7,0
  2699.  dc.w 64*4*8,0
  2700.  dc.w 64*4*9,0
  2701.  dc.w 64*4*10,0
  2702.  dc.w 64*4*11,0
  2703.  dc.w 64*4*12,0
  2704.  dc.w 64*4*13,0
  2705.  dc.w 64*4*14,0
  2706.  dc.w 64*4*15,0
  2707. ;Exploding=16-31
  2708.  dc.w 4*(64*16),0
  2709.  dc.w 4*(64*16+16),0
  2710.  dc.w 4*(64*16+32),0
  2711.  dc.w 4*(64*16+48),0
  2712.  
  2713.  dc.w 4*(64*16),16
  2714.  dc.w 4*(64*16+16),16
  2715.  dc.w 4*(64*16+32),16
  2716.  dc.w 4*(64*16+48),16
  2717.  
  2718.  dc.w 4*(64*16),32
  2719.  dc.w 4*(64*16+16),32
  2720.  dc.w 4*(64*16+32),32
  2721.  dc.w 4*(64*16+48),32
  2722.  
  2723.  dc.w 4*(64*16),48
  2724.  dc.w 4*(64*16+16),48
  2725.  dc.w 4*(64*16+32),48
  2726.  dc.w 4*(64*16+48),48
  2727. ;dying=32-33
  2728.  dc.w 64*4*17,0
  2729.  dc.w 64*4*18,0
  2730.  
  2731.  
  2732. ALIEN_PAL:
  2733.  incbin "alien2.256pal"
  2734.  
  2735. PICKUPS_WAD:
  2736. ; incbin "Pickups.wad"
  2737. PICKUPS_PTR:
  2738. ; incbin "PICKUPS.ptr"
  2739. PICKUPS_FRAMES:
  2740. ; medikit=0
  2741.  dc.w 0,0
  2742. ; big gun=1
  2743.  dc.w 0,32
  2744. ; bullet=2
  2745.  dc.w 64*4,32
  2746. ; Ammo=3
  2747.  dc.w 32*4,0 
  2748. ;battery=4
  2749.  dc.w 64*4,0
  2750. ;Rockets=5
  2751.  dc.w 192*4,0
  2752. ;gunpop=6-16
  2753.  dc.w 128*4,0
  2754.  dc.w (128+16)*4,0
  2755.  dc.w (128+32)*4,0
  2756.  dc.w (128+48)*4,0
  2757.  dc.w 128*4,16
  2758.  dc.w (128+16)*4,16
  2759.  dc.w (128+32)*4,16
  2760.  dc.w (128+48)*4,16
  2761.  dc.w 128*4,32
  2762.  dc.w (128+16)*4,32
  2763.  dc.w (128+32)*4,32
  2764.  dc.w (64+16)*4,32
  2765.  dc.w (64*4),48
  2766.  dc.w (64+16)*4,48
  2767.  
  2768. ; RocketLauncher=20
  2769.  dc.w (64+32)*4,0
  2770.  
  2771. ;grenade = 21-24
  2772.  dc.w 64*4,32
  2773.  dc.w (64+16)*4,32
  2774.  dc.w (64+16)*4,48
  2775.  dc.w 64*4,48
  2776.  
  2777. ; shotgun = 25
  2778.  dc.w 128*4,32
  2779.  
  2780. ; grenade launcher =26
  2781.  dc.w 256*4,0
  2782.  
  2783. ; shotgun shells*4=27
  2784.  dc.w 64*3*4,32
  2785. ; shotgun shells*20=28
  2786.  dc.w (64*3+32)*4,0
  2787. ; grenade clip=29
  2788.  dc.w (64*3+32)*4,32
  2789.  
  2790.  
  2791. PICKUPS_PAL:
  2792.  incbin "PICKUPS.256pal"
  2793.  
  2794. BIGBULLET_WAD:
  2795. ; incbin "bigbullet.wad"
  2796. BIGBULLET_PTR:
  2797. ; incbin "bigbullet.ptr"
  2798. BIGBULLET_FRAMES:
  2799.  dc.w 0,0
  2800.  dc.w 0,32
  2801.  dc.w 32*4,0
  2802.  dc.w 32*4,32
  2803.  dc.w 64*4,0
  2804.  dc.w 64*4,32
  2805.  dc.w 96*4,0
  2806.  dc.w 96*4,32
  2807.  
  2808.  dc.w 128*4,0
  2809.  dc.w 128*4,32
  2810.  dc.w 32*5*4,0
  2811.  dc.w 32*5*4,32
  2812.  dc.w 32*6*4,0
  2813.  dc.w 32*6*4,32
  2814.  dc.w 32*7*4,0
  2815.  dc.w 32*7*4,32
  2816.  dc.w 32*8*4,0
  2817.  dc.w 32*8*4,32
  2818.  dc.w 32*9*4,0
  2819.  dc.w 32*9*4,32
  2820. BIGBULLET_PAL
  2821.  incbin "bigbullet.256pal"
  2822.  
  2823. EXPLOSION_FRAMES:
  2824.  dc.w 0,0
  2825.  dc.w 64*4,0
  2826.  dc.w 64*4*2,0
  2827.  dc.w 64*4*3,0
  2828.  dc.w 64*4*4,0
  2829.  dc.w 64*4*5,0
  2830.  dc.w 64*4*6,0
  2831.  dc.w 64*4*7,0
  2832.  dc.w 64*4*8,0
  2833.  
  2834. EXPLOSION_PAL
  2835.  incbin "explosion.256pal"
  2836.  
  2837. UGLYMONSTER_WAD:
  2838. ; incbin "uglymonster.wad"
  2839. UGLYMONSTER_PTR:
  2840. ; incbin "uglymonster.ptr"
  2841. UGLYMONSTER_FRAMES:
  2842.  dc.w 0,0
  2843. UGLYMONSTER_PAL:
  2844.  incbin "uglymonster.pal"
  2845.  
  2846. FLYINGMONSTER_WAD:
  2847. ; incbin "FLYINGalien.wad"
  2848. FLYINGMONSTER_PTR:
  2849. ; incbin "FLYINGalien.ptr"
  2850. FLYINGMONSTER_FRAMES:
  2851.  dc.w 0,0
  2852.  dc.w 64*4,0 
  2853.  dc.w 64*4*2,0 
  2854.  dc.w 64*4*3,0 
  2855.  dc.w 64*4*4,0 
  2856.  dc.w 64*4*5,0 
  2857.  dc.w 64*4*6,0 
  2858.  dc.w 64*4*7,0 
  2859.  dc.w 64*4*8,0 
  2860.  dc.w 64*4*9,0 
  2861.  dc.w 64*4*10,0 
  2862.  dc.w 64*4*11,0 
  2863.  dc.w 64*4*12,0 
  2864.  dc.w 64*4*13,0 
  2865.  dc.w 64*4*14,0 
  2866.  dc.w 64*4*15,0 
  2867.  dc.w 64*4*16,0 
  2868.  dc.w 64*4*17,0 
  2869.  dc.w 64*4*18,0 
  2870.  dc.w 64*4*19,0 
  2871.  dc.w 64*4*20,0 
  2872.  
  2873. FLYINGMONSTER_PAL:
  2874.  incbin "FLYINGalien.256pal"
  2875.  
  2876. KEYS_WAD:
  2877. ; incbin "keys.wad"
  2878. KEYS_PTR:
  2879. ; incbin "KEYS.PTR"
  2880. KEYS_FRAMES:
  2881.  dc.w 0,0
  2882.  dc.w 0,32
  2883.  dc.w 32*4,0
  2884.  dc.w 32*4,32
  2885. KEYS_PAL:
  2886.  incbin "keys.256pal"
  2887.  
  2888. ROCKETS_WAD:
  2889. ; incbin "ROCKETS.wad"
  2890. ROCKETS_PTR:
  2891. ; incbin "ROCKETS.ptr"
  2892. ROCKETS_FRAMES:
  2893. ;rockets=0 to 3
  2894.  dc.w 0,0
  2895.  dc.w 32*4,0
  2896.  dc.w 0,32
  2897.  dc.w 32*4,32
  2898.  
  2899. ;Green bullets = 4 to 7
  2900.  dc.w 64*4,0
  2901.  dc.w (64+32)*4,0
  2902.  dc.w 64*4,32
  2903.  dc.w (64+32)*4,32
  2904.  
  2905. ;Blue Bullets = 8 to 11
  2906.  dc.w 128*4,0
  2907.  dc.w (128+32)*4,0
  2908.  dc.w 128*4,32
  2909.  dc.w (128+32)*4,32
  2910.  
  2911.  
  2912. ROCKETS_PAL:
  2913.  incbin "ROCKETS.256pal"
  2914.  
  2915. BARREL_WAD:
  2916. ; incbin "BARREL.wad"
  2917. BARREL_PTR:
  2918. ; incbin "BARREL.ptr"
  2919. BARREL_FRAMES:
  2920.  dc.w 0,0
  2921.  
  2922. BARREL_PAL: incbin "BARREL.256pal"
  2923.  
  2924. GUNS_WAD:
  2925. ; incbin "guns.wad"
  2926. GUNS_PTR:
  2927. ; incbin "GUNS.PTR"
  2928. GUNS_FRAMES:
  2929.  
  2930.  dc.w 96*4*20,0
  2931.  dc.w 96*4*21,0
  2932.  dc.w 96*4*22,0
  2933.  dc.w 96*4*23,0
  2934.  
  2935.  dc.w 96*4*4,0
  2936.  dc.w 96*4*5,0
  2937.  dc.w 96*4*6,0
  2938.  dc.w 96*4*7,0
  2939.  
  2940.  dc.w 96*4*16,0
  2941.  dc.w 96*4*17,0
  2942.  dc.w 96*4*18,0
  2943.  dc.w 96*4*19,0
  2944.  
  2945.  dc.w 96*4*12,0
  2946.  dc.w 96*4*13,0
  2947.  dc.w 96*4*14,0
  2948.  dc.w 96*4*15,0
  2949.  
  2950.  dc.w 96*4*24,0
  2951.  dc.w 96*4*25,0
  2952.  dc.w 96*4*26,0
  2953.  dc.w 96*4*27,0
  2954.  
  2955.  dc.w 0,0
  2956.  dc.w 0,0
  2957.  dc.w 0,0
  2958.  dc.w 0,0
  2959.  
  2960.  dc.w 0,0
  2961.  dc.w 0,0
  2962.  dc.w 0,0
  2963.  dc.w 0,0
  2964.  
  2965.  dc.w 96*4*0,0
  2966.  dc.w 96*4*1,0
  2967.  dc.w 96*4*2,0
  2968.  dc.w 96*4*3,0 
  2969.  
  2970. GUNS_PAL: incbin "newgunsinhand.256pal"
  2971.  
  2972. MARINE_WAD:
  2973. ; incbin "newMarine.wad"
  2974. MARINE_PTR:
  2975. ; incbin "newMARINE.ptr"
  2976. MARINE_FRAMES:
  2977.  dc.w 0,0
  2978.  dc.w 64*4,0
  2979.  dc.w (64*2)*4,0
  2980.  dc.w (64*3)*4,0
  2981.  dc.w (64*4)*4,0
  2982.  dc.w (64*5)*4,0
  2983.  dc.w (64*6)*4,0
  2984.  dc.w (64*7)*4,0
  2985.  dc.w (64*8)*4,0
  2986.  dc.w (64*9)*4,0
  2987.  dc.w (64*10)*4,0
  2988.  dc.w (64*11)*4,0
  2989.  dc.w (64*12)*4,0
  2990.  dc.w (64*13)*4,0
  2991.  dc.w (64*14)*4,0
  2992.  dc.w (64*15)*4,0
  2993.  dc.w (64*16)*4,0
  2994.  dc.w (64*17)*4,0
  2995.  dc.w (64*18)*4,0
  2996. MARINE_PAL:
  2997.  incbin "newmarine.256pal"
  2998. TOUGHMARINE_FRAMES:
  2999.  dc.w 0,0
  3000.  dc.w 64*4,0
  3001.  dc.w (64*2)*4,0
  3002.  dc.w (64*3)*4,0
  3003.  dc.w (64*4)*4,0
  3004.  dc.w (64*5)*4,0
  3005.  dc.w (64*6)*4,0
  3006.  dc.w (64*7)*4,0
  3007.  dc.w (64*8)*4,0
  3008.  dc.w (64*9)*4,0
  3009.  dc.w (64*10)*4,0
  3010.  dc.w (64*11)*4,0
  3011.  dc.w (64*12)*4,0
  3012.  dc.w (64*13)*4,0
  3013.  dc.w (64*14)*4,0
  3014.  dc.w (64*15)*4,0
  3015.  dc.w (64*16)*4,0
  3016.  dc.w (64*17)*4,0
  3017.  dc.w (64*18)*4,0
  3018. TOUGHMARINE_PAL:
  3019.  incbin "toughmutant.256pal"
  3020. FLAMEMARINE_FRAMES:
  3021.  dc.w 0,0
  3022.  dc.w 64*4,0
  3023.  dc.w (64*2)*4,0
  3024.  dc.w (64*3)*4,0
  3025.  dc.w (64*4)*4,0
  3026.  dc.w (64*5)*4,0
  3027.  dc.w (64*6)*4,0
  3028.  dc.w (64*7)*4,0
  3029.  dc.w (64*8)*4,0
  3030.  dc.w (64*9)*4,0
  3031.  dc.w (64*10)*4,0
  3032.  dc.w (64*11)*4,0
  3033.  dc.w (64*12)*4,0
  3034.  dc.w (64*13)*4,0
  3035.  dc.w (64*14)*4,0
  3036.  dc.w (64*15)*4,0
  3037.  dc.w (64*16)*4,0
  3038.  dc.w (64*17)*4,0
  3039.  dc.w (64*18)*4,0
  3040. FLAMEMARINE_PAL:
  3041.  incbin "flamemutant.256pal"
  3042.  
  3043.  
  3044. BIGALIEN_WAD:
  3045. ; incbin "BIGSCARYALIEN.wad"
  3046. BIGALIEN_PTR:
  3047. ; incbin "BIGSCARYALIEN.ptr"
  3048. BIGALIEN_FRAMES:
  3049. ; walking=0-3
  3050.  dc.w 0,0
  3051.  dc.w 128*4,0
  3052.  dc.w 128*4*2,0
  3053.  dc.w 128*4*3,0
  3054. BIGALIEN_PAL:
  3055.  incbin "BIGSCARYALIEN.256pal"
  3056.  
  3057. LAMPS_FRAMES:
  3058.  dc.w 0,0
  3059. LAMPS_PAL:
  3060.  incbin "LAMPS.256pal"
  3061.  
  3062. WORM_FRAMES:
  3063.  dc.w 0,0
  3064.  dc.w 90*4,0
  3065.  dc.w 90*4*2,0
  3066.  dc.w 90*4*3,0
  3067.  dc.w 90*4*4,0
  3068.  dc.w 90*4*5,0
  3069.  dc.w 90*4*6,0
  3070.  dc.w 90*4*7,0
  3071.  dc.w 90*4*8,0
  3072.  dc.w 90*4*9,0
  3073.  dc.w 90*4*10,0
  3074.  dc.w 90*4*11,0
  3075.  dc.w 90*4*12,0
  3076.  dc.w 90*4*13,0
  3077.  dc.w 90*4*14,0
  3078.  dc.w 90*4*15,0
  3079.  dc.w 90*4*16,0
  3080.  dc.w 90*4*17,0
  3081.  dc.w 90*4*18,0
  3082.  dc.w 90*4*19,0
  3083.  dc.w 90*4*20,0
  3084. WORM_PAL:
  3085.  incbin "worm.256pal"
  3086.  
  3087. BIGCLAWS_FRAMES:
  3088.  dc.w 0,0
  3089.  dc.w 128*4,0
  3090.  dc.w 128*4*2,0
  3091.  dc.w 128*4*3,0
  3092.  dc.w 128*4*4,0
  3093.  dc.w 128*4*5,0
  3094.  dc.w 128*4*6,0
  3095.  dc.w 128*4*7,0
  3096.  dc.w 128*4*8,0
  3097.  dc.w 128*4*9,0
  3098.  dc.w 128*4*10,0
  3099.  dc.w 128*4*11,0
  3100.  dc.w 128*4*12,0
  3101.  dc.w 128*4*13,0
  3102.  dc.w 128*4*14,0
  3103.  dc.w 128*4*15,0
  3104.  dc.w 128*4*16,0
  3105.  dc.w 128*4*17,0
  3106. BIGCLAWS_PAL:
  3107.  incbin "bigclaws.256pal"
  3108.  
  3109. TREE_FRAMES:
  3110.  dc.w 0,0
  3111.  dc.w 64*4,0
  3112.  dc.w 64*2*4,0
  3113.  dc.w 64*3*4,0
  3114.  
  3115.  dc.w 0,0
  3116.  dc.w 64*4,0
  3117.  dc.w 64*2*4,0
  3118.  dc.w 64*3*4,0
  3119.  
  3120.  
  3121.  dc.w 0,0
  3122.  dc.w 64*4,0
  3123.  dc.w 64*2*4,0
  3124.  dc.w 64*3*4,0
  3125.  
  3126.  
  3127.  dc.w 0,0
  3128.  dc.w 64*4,0
  3129.  dc.w 64*2*4,0
  3130.  dc.w 64*3*4,0
  3131.  
  3132.  dc.w 0,0
  3133.  dc.w 0,0
  3134.  
  3135.  dc.w 32*8*4,0
  3136.  dc.w 32*9*4,0
  3137.  dc.w 32*10*4,0
  3138.  dc.w 32*11*4,0
  3139.  
  3140. TREE_PAL:
  3141.  incbin "tree.256pal"
  3142.  
  3143.  
  3144.  even
  3145. ObAdds:
  3146. ; incbin "ALIEN1.ptr"
  3147. objpal:
  3148. ; incbin "ALIEN1.256pal"
  3149. TextureMaps:
  3150.  incbin "Texturemaps"
  3151. TexturePal:
  3152.  incbin "texture256pal"
  3153.  
  3154. testval: dc.l 0